android解鎖屏時Activity生命週期的變化

風的王子發表於2013-09-02

最近做的忍者小雞暗殺行動遇到按鎖屏鍵再解鎖時 進入遊戲畫面會特別卡的問題,後來打日誌發現 鎖屏再解屏時生命Activity的生命週期發生異常變化引起的,下面就具體來看下。

事先在GameActivity(遊戲主介面)的 onCreate() 方法和 onDestroy()方法打上Log 。

進入GameActivity時

——————————->onCreate();

按鎖屏後 :

—————————–>onDestroy();

—————————–>onCreate();

再解鎖:

——————————>onDestroy();

——————————->onCreate();

 

根據日誌可以看出 鎖屏時 系統銷燬當前Activity又在後臺建立了一個Activity ,再解鎖時 系統又銷燬了後臺的Activity 再建立一個新的Activity。

起初不是很明白,後來在網上查了相關資料發現這中情況是由於橫豎屏切換引起的,橫豎屏切換時 會銷燬當前Activity 再建立 一個新的Activity(橫屏切豎屏或者豎屏切橫屏)。具體過程大家可以寫個demo 打上日誌看看 ,這裡就不細說了,至於為什麼要這樣設計還有待研究,下面就來看看這個問題的解決方法:

解決這個問題 只要在程式的配置檔案 (APPManifest.xml ,的相關Activity里加上

android:configChanges=”keyboard|keyboardHidden|orientation”

加上這句後 按鎖屏鍵 就不會銷燬當前Activity 也不會在後臺建立Activity了  ,其生命週期類似於按了Home鍵的過程。

相關文章