亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

安卓中Service組件怎么用

發布時間:2021-11-22 15:20:18 來源:億速云 閱讀:115 作者:小新 欄目:開發技術

這篇文章主要介紹安卓中Service組件怎么用,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

1:Service的創建

Service就是服務的意思,它的特點就是當你開啟服務以后即使你關閉app它也在運行,直到調用停止服務的方法。典型的用法就是音樂播放器。

Service的創建同Activity一樣最好不要自己繼承寫類。創建方法為自己項目右鍵->new->other->Android Object->然后一直下一步就可以了(中間有取類名可以自行更改)

2:Service的生命周期

安卓中Service組件怎么用

Service的生命周期有2種一種是開啟服務和綁定服務。大家看上圖就可以一目了然。

3:啟動和綁定服務以及關閉服務

首先是第一種啟動服務,使用一個按鈕并在其監聽事件里啟動服務,代碼如下

//第一個按鍵啟動服務
findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        service = new Intent();
        //設置跳轉到的服務
        service.setClass(MainActivity.this, MyService.class);
        //啟動服務
        startService(service );
    }
});
//第二個按鍵關閉服務
findViewById(R.id.button2).setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        stopService(service);
    }
});

當啟動服務以后如果在啟動只會調用onStartCommand方法,不會再新建一個服務對象(構造方法只執行一次)。如下圖所示

安卓中Service組件怎么用正常的啟動結束服務打的日志圖如下(被水印遮住了蛋疼。。我源代碼會上傳大家可以自己驗證)

安卓中Service組件怎么用

然后是第二種綁定服務,方法跟上面類似,代碼如下

//第三個按鍵綁定服務
findViewById(R.id.button3).setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        service = new Intent();
        //設置跳轉到的服務
            service.setClass(MainActivity.this, MyService.class);
            //啟動服務
        bindService(service, null, Context.BIND_AUTO_CREATE);
    }
});
//第四個按鍵解綁服務
findViewById(R.id.button4).setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        unbindService(null);
    }
});

綁定服務方法的運行順序如下(如生命周期所示)

安卓中Service組件怎么用

4:動態的訪問Service的方法

剛才我啟動綁定服務方法時候中間那個參數為null,現在我們來為它傳入一個參數(由于要傳入的對象是一個接口所以必須重寫它的方法)

private ServiceConnection conn = new ServiceConnection() {
                                                                                                                                                                                                                           
    @Override
    public void onServiceDisconnected(ComponentName name) {
                                                                                                                                                                                                                               
    }
                                                                                                                                                                                                                           
    @Override
    public void onServiceConnected(ComponentName name, IBinder service)   {
                                                                                                                                                                                                                         
    }
};
findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
                                                                                                                                                                                                                             
    @Override
    public void onClick(View v) {
        Intent service = new Intent(MainActivity.this, MyService.class);
        bindService(service , conn , Context.BIND_AUTO_CREATE);
    }
});

回到Service的代碼頁面,在Service中寫一個play方法并打日志以便我們觀看結果,然后寫一個內部類繼承binder并寫一個方法來調用Service的play()方法,最后在onbind方法返回一個binder對象

@Override
public IBinder onBind(Intent intent) {
    return new MyBinder();
}
                                                                                                                           
class MyBinder extends Binder
{
    public void start()
    {
        play();
    }
}
                                                                                                                           
public void play()
{
    Log.e("MyService", "play()");
}

在回到Activity代碼,在conn接口中的onServiceConnected()方法中獲取Mybinder對象,在調用對象的start()方法,代碼如下

private ServiceConnection conn = new ServiceConnection() {
                                                         
    @Override
    public void onServiceDisconnected(ComponentName name) {
                                                             
    }
                                                         
    @Override
    public void onServiceConnected(ComponentName name, IBinder service) {
        //獲取Service中的Mybinder的對象
        MyBinder binder = (MyBinder) service;
        //調用Mybinder中的方法,里面就包含了Service中的方法
        binder.start();
                                                         
};

大功告成。日志打印結果如下

安卓中Service組件怎么用

以上是“安卓中Service組件怎么用”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

吉林省| 西充县| 上犹县| 巴中市| 古交市| 百色市| 武隆县| 阜康市| 沙湾县| 兰考县| 永川市| 青龙| 澄迈县| 巴塘县| 湟中县| 沐川县| 肥东县| 乌拉特中旗| 台中县| 通州区| 康保县| 华亭县| 健康| 方城县| 鲁山县| 桃园市| 武邑县| 璧山县| 广宗县| 兴宁市| 宁河县| 阿勒泰市| 浮山县| 富宁县| 华阴市| 开化县| 黔西县| 芷江| 兴安盟| 金寨县| 苏州市|