android 任務棧及啓動模式

1.一個應用程序一般都是由多個activity組成的。
2.任務棧(task stack)(別名back stack後退棧) 記錄存放用戶開啓的activity的。
3.一個應用程序一被開啓系統就給他分配一個任務棧,當所有的activity都退出的時候,任務棧就清空了。
4.任務棧的id是一個integer的數據類型 自增長的。
5.在android操作系統裏面會存在多個任務棧,一個應用程序一個任務棧。
6.桌面應用和一般的應用程序是一樣的,任務棧的行爲也是一樣。
7.默認情況下, 關閉掉一個應用程序,清空了這個應用程序的任務棧。應用程序的進程還會保留。




爲什麼要引入任務棧的概念:
windows下 可以通過點擊任務欄 切換任務
android下 長按小房子 切換任務


爲了記錄用戶開啓了那些activity,記錄這些activity開啓的先後順序,google引入任務棧(task stack)概念,幫助維護好的用戶體驗。






activity的啓動模式:

在AndroidManifest.xml中對指定Activity配置:

<activity Android:name=".MainActivity"
            android:launchMode="singleInstance"
            >

1. standard   默認標準的啓動模式, 每次startActivity都是創建一個新的activity的實例。
              適用於絕大大數情況
2. singleTop  單一頂部,如果要開啓的activity在任務棧的頂部已經存在,就不會創建新的實例,
              而是調用 onNewIntent() 方法。
              應用場景: 瀏覽器書籤。 避免棧頂的activity被重複的創建,解決用戶體驗問題。
3. singletask 單一任務棧 , activity只會在任務棧裏面存在一個實例。如果要激活的activity,在
              任務棧裏面已經存在,就不會創建新的activity,而是複用這個已經存在的activity,
              調用 onNewIntent() 方法,並且清空這個activity任務棧上面所有的activity
              應用場景:瀏覽器activity, 整個任務棧只有一個實例,節約內存和cpu的目的
              注意: activity還是運行在當前應用程序的任務棧裏面的。不會創建新的任務棧。


4. singleInstance  單態 單例模式
              單一實例,整個手機操作系統裏面只有一個實例存在。不同的應用去打開這個activity
     共享 公用的同一個activity。
              他會運行在自己單獨,獨立的任務棧裏面,並且任務棧裏面只有他一個實例存在。
              應用場景:呼叫來電界面 InCallScreen
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章