11、橫豎屏切換(橫豎屏方向改變帶來的問題)
問題:當橫豎屏切換時,會導致生命週期重置,這在遊戲設計中是不能被理解的,所以針對這種問題我們可以有2種方法解決:
1、直接在清單文件中指定屏幕的方向
android:screenOrientation=”landscape” | portrait
2、或在清單文件通過配置內容隨着方向改變而改變,但是生命週期方法不會再重新調用
android:configChanges=”keyboardHidden|screenSize|orientation”
12、任務和棧
adb shell dumpsys activity 使用命令查看activity啓動任務棧的詳細信息
* Task – 任務
一個運用程序裏面可以包含多個界面,每一個界面都是來設計顯示界面,並且與用戶進行交互.沒一個界面都是一個任務.
- Stack – 棧
一種數據格式,遵循後進先出. 隊列(queue)也是
13、activity啓動模式
設計activity的啓動模式有2中方法:
第一種是在清單文件設計:
第2中方法是在啓動界面是設計:
啓動模式的分類(四鍾):
- standard - 默認的啓動模式
啓動多少次界面,就會有多少個實例被壓到棧中。
- singleTop - 單一頂部模式
只要當前啓動的activity,實例位於棧頂,那麼將不會繼續創建該界面的實例,只要不是位於棧頂,那麼與默認的啓動模式一樣。
場景: 短信編寫界面,用於去迴避一些奇怪的現象。
- singleTask - 單一任務棧
如果啓動的任務在棧中已經存在實例,那麼將複用以前的實例對象,並且把該實例與棧頂之間的其他實例全部移除掉,讓該實例位於棧頂。
應用場景: 瀏覽器的界面 ,如果一個應用啓動非常的消耗內存開銷,那麼可以做成這個啓動模式。
- singleInstance - 全局唯一模式 (單例模式)
特點: 如果哪一個界面,它的啓動模式是singleInstance,那麼它的實例將會存放到一個獨立的棧中,並且這個棧有且只有它自己一個實例 。以後要想顯示它,無非就是做棧的切換工作就可以了。
應用場景: 如果一個界面在單位時間內,創建的頻率非常大,非常高。 可以設計成singleInstance模式。 撥號界面、緊急呼叫界面