閱讀873 返回首頁    go 阿裏雲 go 技術社區[雲棲]


android任務棧

1.啟動任務棧
    第一種,動作設置為“android.intent.action.MAIN”,類別設置為“android.intent.category.LAUNCHER”,
可以使這個ACT(activity)實例稱為一個任務棧的入口,擁有這種類型的intent-filter的ACT類型的圖
表和名字也會顯示在application launcher中。
    第二種,即是采用用“singleInstance”模式,另外開個一個唯一ACT的棧,

提示:如果“singleInstance”模式同時還加上上麵的類型,則當前ACT也是一個單獨ACT的任務棧,而應用其他ACT會組成另外一個任務棧

 

2.啟動模式
<activity>標簽的launchMode屬性可以設置為四種不同的模式:
“standard”   :(默認模式)反複創建新實例,如A-B-A-C-D-B-A…依次隨便加
“singleTop” : 避免出現類似A-B-C-D-D…,如D采用"singleTop",則是A-B-C-D 
“singleTask”:    如A采用"singleTask",則在“standard”中類似A-B-C-D-A任務棧,在“singleTask”隻會剩下A,BCD都會被回收
“singleInstance” :  此模式你另外開個一個任務棧,且單獨隻有一個ACT

 

3.清理任務棧
默認:如果一個任務棧在很長的一段時間都被用戶保持在後台的,那麼係統就會將這個任務棧中除了根ACT以外的
其它所有ACT全部清除掉。當用戶再將任務棧切換到前台,則隻能顯示根activity了。
    1)alwaysRetainTaskState屬性
    如果將根ACT的alwaysRetainTaskState屬性設置為“true”,則即便一個任務棧在很長的一段時間都被用戶
保持在後台的,係統也不會對這個任務棧進行清理。
    2)clearTaskOnLaunch屬性
    如果將根ACT的clearTaskOnLaunch屬性設置為“true”,那麼隻有這個任務棧切換到了後台,那麼係統就會
將這個任務棧中除了根ACT以外的其它所有ACT全部清除掉。即和alwaysRetainTaskState的行為完全相反。
    3) finishOnTaskLaunch屬性
    這個屬性的行為類似於clearTaskOnLaunch,但是此屬性作用於單個的ACT對象,而不是整個任務棧。當這個
任務棧切換到了後台,這個屬性可以使任務棧清理包括根ACT在內的任何ACT對象。 

 

4.還複雜點可以加入親屬關係taskAffinity


總結:簡單的說,即是開一個(或幾個)任務棧,在每個任務棧上添加ACT,遇到“singleTask”的則回到之前存在的ACT,把夾在中間的ACT全部回收

最後更新:2017-04-03 20:19:26

  上一篇:go PHP使用Smarty模板目錄結構配置
  下一篇:go Word2010中搜狗拚音輸入法(各種輸入法)消失了的解決辦法