程序設置橫屏後,鎖屏時會被銷燬一遍,解鎖時又從新加載onCreate的問題解決

今天在寫一個應用的時候,由於須要設置成橫屏模式,因此在Manifest裏面的Activity裏面加了兩個參數設置:

android:screenOrientation="landscape" android


        android:configChanges="keyboardHidden|orientation" 測試


這是設置屏幕方向爲橫屏,以及禁止在屏幕切換的時候重啓Activity和隱藏鍵盤。橫豎屏切換的知識能夠看我另外一篇文章。 spa


原本是用的好好的,可是無心中在鎖屏後再解鎖的時候,應用會先豎屏,而後再轉回橫屏,並且還有一些時間間隔,因而我就去調查了一番: orm


首先,在全部Activity的生命週期加了一句打印LOG,發如今鎖屏的時候,Activity就執行了一遍onDestroy,解鎖的時候,又從新從onCreat來打開,因而就又執行了一遍onCreat裏面的代碼,,,這不科學,正常狀況下是不會執行這兩個的(除非系統內存吃緊,自動銷燬,可是這個狀況排除了)。 blog


通過反覆查找和DEBUG以後,又和同窗同事討論了半天,還去查看了鎖屏的源代碼(雖然沒看懂幾句),仍是沒有結果,,, 生命週期


不過,皇天不負有心人,終於在stackoverflow上找到一大神的回答了~ 內存


問題的關鍵所在,就是API13之後,須要在 android:configChanges
的參數裏面加一個screenSize!!! get


也就是: android:configChanges="screenSize|keyboardHidden|orientation"  it




通過我親手真機測試,問題很乾淨地被解決了,媽媽不再用擔憂它重複onCreate了! io

相關文章
相關標籤/搜索