11、橫豎屏切換+12、任務和棧+13、activity啓動模式

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模式。 撥號界面、緊急呼叫界面

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章