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

溫馨提示×

溫馨提示×

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

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

android四大基礎組件--Service生命周期詳解

發布時間:2020-07-13 19:35:13 來源:網絡 閱讀:998 作者:詩情碧霄 欄目:移動開發

android四大基礎組件--ServiceService

生命周期詳解


1、Service的生命周期:


I> 在非綁定Service情況下,只有oncreate(),onStartCommand(),onDestory()方法情況下:

    

  操作方法對應生命周期一:

   a、【執行startService(Intent)

   執行生命周期方法:oncreate()--->onStartCommand();

   b、【執行stopService(Intent)】 

   執行生命周期方法:onDestory();


  操作方法對應生命周期二: 

   a、【執行startService(Intnet)

   執行生命周期方法:oncreate()--->onStartCommand();

   b、【執行返回鍵】--->【執行startService(Intnet)

   執行生命周期方法:onStartCommand();

   c、【執行stopService(Intent)

   執行生命周期方法:onDestory();

   d、【執行startService(Intnet)

   執行生命周期方法:oncreate()--->onStartCommand();

   e、【執行stopService(Intent)】--->【執行返回鍵】--->【執行startService(Intnet)】    執行生命周期方法:oncreate()--->onStartCommand()

 

  總結:

  只有當service被首次創建的時候才會執行oncreate()方法,同個service被多次啟動的時候就不會調用oncreate()方法,但是每次的啟動都會調用onstartCommand()方法;


II> 在綁定Service情況下,只有onCreate(),onBind(Intent intent),onUnbind(Intent intent),onDestroy()方法情況下:


  操作方法對應生命周期:

  a、【執行bindService(intent,conn, Service.BIND_AUTO_CREATE)

  執行生命周期方法:oncreate()--->onBind()---> ServiceConnection類的onServiceConnected()(作用:activity與service建立連接的方法);

  b、【執行unbindService(conn)

  執行生命周期方法:onUnbind()--->onDestory();


android四大基礎組件--Service生命周期詳解

android四大基礎組件--Service生命周期詳解

android四大基礎組件--Service生命周期詳解



III>綁定service和非綁定service混合使用執行的生命周期


  操作方法:

  a、【執行startService

  執行生命周期方法:onCreate()-->onStartCommand();

  b、【執行bindService

  執行生命周期方法:onBind()--->onServiceConnected();

  c、【執行onUnbindService

  執行生命周期方法:onUnbind();

  d、【執行bindService

  執行生命周期方法:onServiceConnected()-->onRebind();

  e、【執行onUnbindService

  執行生命周期方法:onUnbind;

  f、【執行stopService

  執行生命周期方法:onDestory()


android四大基礎組件--Service生命周期詳解


調用Service如下:


android四大基礎組件--Service生命周期詳解

執行的打印結果如下:

android四大基礎組件--Service生命周期詳解


總結:

1、當service執行startService操作以后,執行bindService,在service被綁定以后沒有解綁的情況下,去執行stopService,此時不會觸發Service的onDestory方法,但是解除綁定以后,繼續執行stopService將觸發onDestory方法。

2、ServiceConnection類中,如果service意外的發生中斷,則此類中的onServiceDisconnected方法將會被調用執行;正常的中斷(如:執行unbindService方法),則此類中的onServiceDisconnected方法不會被調用。

3、如果一個Service使用兩種模式開啟(bindService和startService),則必須保證兩個生命周期都結束,才能執行onDestory方法。例如:bindxx--》startxx--》stopxx 或者 startxx--》bindxx--》stopxx,以上兩種情況均不會執行onDestory()方法。

4、service與activity使用bindService進行綁定,并不能將service 的生命周期與activity的生命周期綁定。在部分情況下,取消綁定的時候也僅僅是取消service與activity之間的關系,并不能停止該service。

5、service中并不能夠執行耗時操作,因為service與所在的應用位于同一個進程,并且service也并不是一條新的線程,如果執行耗時操作,將會出現ANR(Application Not Responding)異常。



2、IntentService執行原理


a>使用隊列來管理Intent請求,每當客戶端代碼通過Intent請求啟動IntentService時,IntentService將會把Intent加入隊列,然后開啟一條新的線程來處理該Intent;


b>對于異步 的startService()請求,IntentService會按次序一次處理隊列中的Intent,該線程保證同一時刻只處理一個Intent;


c>IntentService會創建單獨的線程來處理onHandleIntent()方法實現的代碼,因此開發者無需處理多線程的問題;


d>當消息請求處理完以后IntentService會自動停止,開發者無需調用stopSelf()方法停止service;


e>為Service的onBind()方法提供了默認的實現,默認實現的onBind()返回null;


f>為Service的onstartCommand()方法也提供了默認的實現,該實現會將請求Intent添加到隊列中。


3、Service和IntentServiceActivity的最主要區別

IntentService里面能夠執行耗時操作,而不會造成UI線程阻塞。



總結:

   上述文章通過在android studio中的運行,完整的展現了Service常用生命周期方法的執行過程,通過了解以上的過程能夠方便我們程序的開發,在適當的生命周期,執行對應的方法,這樣有助于程序的優化、方便后期的維護和減少內存不必要的浪費,更有助于我們對android底層學習。同時也對Service和IntentService進行了比較,以及IntentService的執行原理。不足之處,請大家不惜賜教。



向AI問一下細節

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

AI

湘潭县| 华坪县| 城步| 博客| 柳江县| 德兴市| 彭州市| 九台市| 拉萨市| 临夏县| 闵行区| 古交市| 九台市| 浙江省| 曲靖市| 巴里| 凤城市| 东安县| 内江市| 南安市| 西城区| 莒南县| 茌平县| 安达市| 凤翔县| 湟源县| 嘉义市| 招远市| 桐乡市| 肇东市| 灯塔市| 囊谦县| 上思县| 綦江县| 临泽县| 新巴尔虎左旗| 镇沅| 汶川县| 墨玉县| 兰州市| 荥经县|