Android中Activity和task,活动亲和力,启动模式,活动状态以及生命周期,激活钝化
Activity和task:
android通過保持所有activity在同一個task中來維護用戶的經(jīng)歷-典型是在launcher選擇的
應(yīng)用,棧頂活動是交互活動,back后,pop棧,即使涉及多個實例活動,不會重新管理,只有pop和push
?task:
?task是活動的棧,task的值是作為整體設(shè)置給root activity的.
?activity:
?一個task中的所有的activity作為整體進行移動.
?activity和task的關(guān)系,以及同一task內(nèi)activity的行為可通過intent對象的flag標記和清單文件的activity元素
?進行控制.請求和相應(yīng)都有一個說法.
?Intent flag如下:
?FLAG_ACTIVITY_NEW_TASK
?FLAG_ACTIVITY_CLEAR_TOP
?FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
?FLAG_ACTIVITY_SINGLE_TOP
?<activity>屬性有
?taskAffinity
?launchMode
?allowTaskReparenting
?alwaysRetainTaskState
?finishOnTaskLaunch
?Affinity和task:親和力和task
?默認時,應(yīng)用程序所有activity彼此具有一個Affinity-屬于同一任務(wù).但可設(shè)置單獨的activity的Affinity(通過
?<activity>屬性),不同應(yīng)用程序中的activity也可以定義相同的Affinity,或者同一應(yīng)用,不同Affinity.
?Affinity生效需要兩個條件:Intent對象包含F(xiàn)LAG_ACTIVITY_NEW_TASK標記和allowTaskReparenting=true
??FLAG_ACTIVITY_NEW_TASK:
??如果含該標記,系統(tǒng)查找不同的任務(wù)來容納新的activity,通常是新建task.但不一定這樣,如果已經(jīng)存在具有同一
??Affinity的task,新的activity會在那個task中啟動,若沒有,開始新的任務(wù).
??allowTaskReparenting
??若設(shè)置該屬性為true,該activity可以彼task回到前臺時有開始時的task移動到那個task上.
launch Mode:
?standard:每次訪問實例化新的對象.
?singleTop:如果目標activity在棧頂,直接返回.否則實例化.
?singleTask:是單例,通常設(shè)置給root activity.由此開啟的activity具有相同的taskid
?singleInstance:是單例,通常設(shè)置給root activity.由此開啟的activity具有不同的taskid
?task:是activity的棧,
?
activity狀態(tài):
?激活態(tài):棧頂,正在交互
?暫停態(tài):可見,被不完全覆蓋
?停止態(tài):不可見,完全覆蓋.
activity生命周期循環(huán):
?完整周期:onCreate() ---> onDestroy()[停止態(tài)]
?可視周期:onStart() --> onStop();[暫停態(tài)]
?前臺周期:onResume()--->onPause();[激活態(tài)]
?onCreate() --- onStart()?? --- onResume()? --- onPause()? -- onStop? -- onDestory()
??????????????????????? |???????????????? |????????? |????|
??????|????? |-----<----????|
??????|------------<---- onRestart() -------------|
active:激活
deactive:鈍化
總結(jié)
以上是生活随笔為你收集整理的Android中Activity和task,活动亲和力,启动模式,活动状态以及生命周期,激活钝化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 股票sw是什么意思的
- 下一篇: Android中BroadcastRec