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