91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

安卓中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

互助| 抚州市| 彭阳县| 旬阳县| 云林县| 横山县| 华宁县| 芦山县| 闽侯县| 西和县| 清流县| 英德市| 孝义市| 舟曲县| 乐东| 大庆市| 达州市| 达日县| 绥滨县| 阳江市| 张家口市| 横峰县| 武城县| 溧阳市| 泰兴市| 遂川县| 石台县| 呼伦贝尔市| 新安县| 瓦房店市| 台州市| 武乡县| 英吉沙县| 云浮市| 盘山县| 波密县| 东莞市| 莫力| 呼玛县| 彭州市| 平顺县|