service的一些基礎(chǔ)知識(shí)

service的啟動(dòng)方式有兩種:
startService():生命周期 startService()---onCreate()---onStartConmom()---onDestroy();
這種方式啟動(dòng)的話,需要注意一下幾個(gè)問題:
1.:當(dāng)我們通過startService被調(diào)用以后,多次在調(diào)用startService(),onCreate()方法也只會(huì)被調(diào)用一次,而onStartConmon()
會(huì)被多次調(diào)用當(dāng)我們調(diào)用stopService()的時(shí)候,onDestroy()就會(huì)被調(diào)用,從而銷毀服務(wù)。
2.當(dāng)我們通過 startService啟動(dòng)時(shí)候,通過intent傳值,在onStartConmon()方法中獲取值的時(shí)候,一定要先判斷intent是否為 null。
bindService():生命周期 bindService()---onCreate()---onBind()---unBind()---onDestroy();
bindService()這種方式進(jìn)行啟動(dòng)service好處是更加便利activity中操作service,比如加入service中有幾個(gè)方法,a,b ,如果要在
activity中調(diào)用,在需要在activity獲取ServiceConnection對(duì)象,通過ServiceConnection來獲取service中內(nèi)部類的類對(duì)象,然后通過這個(gè)類對(duì)象就可以調(diào)用類中的方法,當(dāng)然這個(gè)類需要繼承Binder對(duì)象。
`private MyBindService service;

private ServiceConnection conn = new ServiceConnection() {
    @Override
    public void onServiceConnected(ComponentName name, IBinder binder) {
        MyBindService.MyBinder myBinder = (MyBindService.MyBinder) binder;
        service = myBinder.getService();
    }

    @Override
    public void onServiceDisconnected(ComponentName name) {
        Log.i("Kathy", "ActivityA - onServiceDisconnected");
    }
};`

下面代碼是service的類部類
public class MyBinder extends Binder { public MyBindService getService() { return MyBindService.this; } }
bindService的特點(diǎn)
(1)每次調(diào)用服務(wù)必須首先bindService,執(zhí)行unbindService后不能調(diào)用;
(2)服務(wù)的生命周期受限于UI線程。一旦應(yīng)用(Activity)終止,服務(wù)將onDestory銷毀;
(3)可以在綁定后調(diào)用服務(wù)里的功能。

混合調(diào)用(須按順序操作):
(1)首先在主界面創(chuàng)建時(shí),startService(intent)啟動(dòng)方式開啟服務(wù),保證服務(wù)長期后臺(tái)運(yùn)行;
(2)然后調(diào)用服務(wù)時(shí),bindService(intent, connection, BIND_AUTO_CREATE)綁定方式綁定服務(wù),這樣可
以調(diào)用服務(wù)的方法;
(3)調(diào)用服務(wù)功能結(jié)束后,unbindService(connection)解除綁定服務(wù),置空中介對(duì)象;
(4)最后不再需要服務(wù)時(shí),stopService(intent)終止服務(wù)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1.什么是Activity?問的不太多,說點(diǎn)有深度的 四大組件之一,一般的,一個(gè)用戶交互界面對(duì)應(yīng)一個(gè)activit...
    JoonyLee閱讀 5,855評(píng)論 2 51
  • 【Android Service】 Service 簡介(★★★) 很多情況下,一些與用戶很少需要產(chǎn)生交互的應(yīng)用程...
    Rtia閱讀 3,235評(píng)論 1 21
  • 0.Android手機(jī)操作系統(tǒng)的四層架構(gòu)? Applications , Application Framewor...
    lucas777閱讀 8,125評(píng)論 0 16
  • 2.1 Activity 2.1.1 Activity的生命周期全面分析 典型情況下的生命周期:在用戶參與的情況下...
    AndroidMaster閱讀 3,272評(píng)論 0 8
  • 自從奶奶患上了老年癡呆癥后,總是忘記方才做過的事情 “媽,我們已經(jīng)吃過飯了!”父親走進(jìn)廚房,見奶奶正拿刀切土豆,無...
    白妘泠閱讀 413評(píng)論 5 6

友情鏈接更多精彩內(nèi)容