Android常見問題總結(一)

以下為一些常見的Android的總結:

 

 

1. Activity與Fragment的生命周期

Activity的生命周期如下圖所示:

Activity生命周期

 

Fragment生命周期如下圖所示:

Fragment生命周期

 

2. Acitivty的四種啟動模式與特點

Android中的Activity由任務棧管理,當我們start一個新的Activity時,就往任務棧中新加入一個棧幀,而當我們finish一個Activity界面時,則往任務棧中移除一個棧幀。Activity具有四種啟動模式,我們可以在配置文件中通過修改launchMode修改,啟動模式分別是:standard、singleTop、singleTask和singleInstance

standard

standard為默認Activity的啟動模式。在standard啟動模式下,無論何時start一個Activity,系統都會往任務棧中加入一個新的棧幀。

 

singleTop

在singleTop啟動模式下,當我們start一個Activity時,系統會先去檢測任務棧棧頂的Activity和要啟動t的Activity是否相同。如果相同則不進行任何操作,否則往任務棧中加入一個新的棧幀。

 

singleTask

在singleTask啟動模式下,當我們start一個Activity時,系統會先去檢測任務棧中是否含有將要啟動的Activity。如果含有,則把該Activity所在棧幀的頂部的棧幀移除,使該Activity所在的棧幀處在棧頂,如果沒有,則新加入一個棧幀。

 

singleInstance

在singleInstance啟動模式下,當我們start一個新的Activity時,該Activity會在一個新的任務棧中啟動。

 

3. Service的生命周期,兩種啟動方法,有什么區別

Android中的Service組件可以通過startService和bindService兩種方法來啟動,其生命周期示意圖如下:

 

Service生命周期

 

如果一個Service同時被調用了startService和bindService方法,那么它的生命周期就變成如下圖所示:

Service生命周期2

 

4. 怎么保證service不被殺死

要想使Service存活下來,我們就必須保證Service所在的進程不被殺掉,一般來說有以下方法:

  1. 在onStartCommand回調方法中返回START_STICKY,那么該進程被殺掉后系統會試圖重啟它
  2. 設置配置文件中application的persistent屬性,把應用提升為系統級別應用,免疫low memory killer
  3. 在Service的onDestroy方法中重啟該Service,不過如果進程被直接殺掉這種方法就無效了
  4. 通過監聽特殊的系統廣播(如屏幕變化、電量變化、網絡變化等)去不斷重啟Service
  5. 使用AlarmManager定時重復開啟Service
  6. 通過設置Service的process屬性,把Service放在子進程中,避免與主進程一起被回收
  7. 開啟一個另外的進程與Service進程互相監視,雙方要是有任意一方被殺掉則重啟

來自: http://blog.csdn.net/superxlcr/article/details/51213434

 本文由用戶 RosMesser 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!