Android學習筆記之Service的 學習

一.Service簡介

            Service是android 系統中的四大組件之一(Activity、Service、BroadcastReceiver、ContentProvider),它跟Activity的級別差不多,但不能自己運行,需要通過某一個Activity或者其他Context對象來調用,並且可以和其他組件進行交互。Service的啓動有兩種方式:context.startService() 和 context.bindService()。

二.Service的啓動流程

    1.通過context.startService()啓動,調用Context.stopService()結束,startService()可以傳遞參數給Service
流程爲:context.startService()  -> onCreate()  -> onStart()  -> Service running  -> context.stopService()  -> onDestroy()  -> Service stop 
 注意 以下問題:

            a.如果Service還沒有運行,則android先調用onCreate(),然後調用onStart();

            b.如果Service已經運行,則只調用onStart(),所以一個Service的onStart方法可能會重複調用多次。 

            c.如果stopService的時候會直接onDestroy,如果是調用者自己直接退出而沒有調用stopService的話,Service會一直在後臺運行,該Service                 的調用者再啓動起來後可以通過stopService關閉Service。

            d.所以調用startService的生命週期爲:onCreate --> onStart (可多次調用) --> onDestroy
        

         2.context.bindService()啓動流程:

            context.bindService()  -> onCreate()  -> onBind()  -> Service running  -> onUnbind()  -> onDestroy()  -> Service stop
           
onBind()將返回給客戶端一個IBind接口實例,IBind允許客戶端回調服務的方法,比如得到Service的實例、運行狀態或其他操作。這個時候把調用者(Context,例如Activity)會和Service綁定在一起,Context退出了,Srevice就會調用onUnbind->onDestroy相應退出。 所以調用bindService的生命週期爲:onCreate --> onBind(只一次,不可多次綁定) --> onUnbind --> onDestory。
在Service每一次的開啓關閉過程中,只有onStart可被多次調用(通過多次startService調用),其他onCreate,onBind,onUnbind,onDestory在一個生命週期中只能被調用一次。
              
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章