-
adb shell dumpsys activity 查看activity及task信息查看全部
-
intent傳遞圖片查看全部
-
activity 啟動模式查看全部
-
bunder傳輸數(shù)據(jù) 不能超過 0.5m 否則回報異常查看全部
-
adb shell dumpsys acctivity 查看當(dāng)前手機的活動過的Activity查看全部
-
task查看全部
-
intent.putextra();查看全部
-
傳遞對象的方法查看全部
-
intent activity之間傳遞數(shù)據(jù)查看全部
-
1. Task stack可能包含來自不同進程的activities。 2. Activity通過設(shè)置android:process來設(shè)置所在進程,以:開頭表明為私有進程,反之則為共有進程。 2. Activity啟動模式:standard(每次在Back stack中創(chuàng)建新的activity),singleTop(若當(dāng)前啟動的activity就在Back stack頂部,則調(diào)用onNewIntent()方法,而不新建activity),singleTask(啟動的activity若不在頂部,則將其之前的activity移除,并將自己放在頂部),singleInstance(啟動的Activity放入單獨的一個Task中)查看全部
-
啟動Activity的模式查看全部
-
singleInstance 這部分再說一下,圖示是從MainActivity->FirstActivity->MainActivity->FirstActivity->MainActivity的順序 (1)啟動MainActivity(創(chuàng)建Task1),再啟動FirstActivity的函數(shù)調(diào)用順序為 MainActivity.onCreate()->MainActivity.onResume()啟動FirstActivity MainActivity.onPause()->FirstActivity.onCreate(),同時創(chuàng)建新的Task2,->FirstActivity.onResume() 最后調(diào)用MainActivity.onStop() (2)從FirstActivity->MainActivity,函數(shù)調(diào)用順序: FirstActivity.onPause()->MainActivity.onCreate(),這時又在Task1中創(chuàng)建了MainActivity的實例,最后調(diào)用FirstActivity.onStop() (3)MainActivity->FirstActivity,函數(shù)調(diào)用順序: MainActivity.onPause()->FirstActivity.onNewIntent()->FirstActivity.onResume()->MainActivity.onStop() (4)按照這個順序,一直到創(chuàng)建第三個MainActivity的實例,這個時候如果點擊back鍵。 會先把Task1的MainActivity finish掉,最后finish掉Task2的FirstActivity。查看全部
-
Activity啟動模式 1. Standard 啟動一個activity時系統(tǒng)會創(chuàng)建這個activity的一個實例。一個activity可以被多次實例化,這幾個實例可以屬于一個task或者屬于多個task;一個task可以有多個實例。如果在一個Task中,某activity自己啟動自己,就會再次創(chuàng)建一個實例,啟動幾次創(chuàng)建幾個。 2. singleTop 如果一個activity的實例處于棧頂?shù)奈恢?,而且此activity的launchMode為“singleTop”,那么它只能有一個實例在棧頂,即如果它在棧頂自己啟動自己將不會創(chuàng)建該activity的實例,而是在原來的實例上調(diào)用onNewIntent(),傳入一個新的intent。 重新啟動該activity的對比: (1)standard:onPause()->onCreate()->onResume() (2)singleTop: onPause()->onNewIntent()->onResume(),而且在調(diào)用onNewIntent()收到一個新intent之前,activity會一直paused 3. singleTask 指定launchMode為singleTask的activity只能在Task中存在一個實例。如果它已經(jīng)存在,再次啟動時將會調(diào)用它的onNewIntent(),傳入intent。除此之外,(重要的是)它還會把自己置于棧頂,并且把其他它之上的activity全部finish()掉。當(dāng)前要除去最開始棧底的MainActivity。 假設(shè)兩個activity A、B,B如果已經(jīng)存在一個實例,且launchMode為singleTask。如果再從A->B,函數(shù)調(diào)用順序應(yīng)該為: A.onPause()->B.onNewIntent()->B.onResume()->A.onStop()->A.onDestory() 4. singleInstance(單實例) 和singleTask很像,不一樣的地方在于: (1)第一次啟動此activity,將會新創(chuàng)建一個task,此task中只有此一個activity (2)如果已經(jīng)存在此activity實例,再次啟動時,調(diào)用onNewIntent(),而不是onCreate(),這一點和singleTask很像查看全部
-
Task和BackStack概念 1. 啟動一個app,framework都會為這個app分配一個Task,有對應(yīng)的TaskID和stack,然后在這個APP中所有的activity都共用一個TaskID和stack。 2. 當(dāng)從一個app的進程跳轉(zhuǎn)到另一個app進程時,還是在同一個task中,這就是Task允許跨進程間調(diào)用。 通過在manifest中聲明activity "android:process=XXX"可以指定這個activity為另一個進程 3. Back Stack 一個Task就是一系列的activity的集合,這些activity以打開的順序放入一個stack中,最后打開的activity最先出來。對于一個app來說,main activity就在棧頂?shù)奈恢谩?在一個app中可能會調(diào)用其他app的activity,但即使兩個activity不在同一個APP中,但是其TaskID是同一個,屬于同一個Task Stack file:///D:/software/Eclipse/adt-bundle-windows-x86-20140702/adt-bundle-windows-x86-20140702/sdk/android_sdk_docs_offline_20/docs/guide/components/tasks-and-back-stack.html 4. android中的多任務(wù) 假設(shè)啟動了APP1,對應(yīng)創(chuàng)建了一個Task A,它有三個activity。然后回到home screen,啟動APP2,對應(yīng)創(chuàng)建了一個Task B。此時,Task A的activity雖然全部stop了,但是Task A的stack還是完整存在的。然后可以通過回到home screen或點擊recent apps啟動Task A,它的activity回到前臺。 5. dumpsys activity (1)running activities部分可以查看當(dāng)前正在運行的activity (2)mFocusedActivity可以查看正在獲取焦點的activity (3)Recent tasks可以查看最近的一些任務(wù)查看全部
-
大數(shù)據(jù)傳遞查看全部
舉報
0/150
提交
取消