當發生 鍵盤開啟 或 橫豎屏切換 等配置改變的情況時,activity就會被銷毀了並且被重啟,如果沒有留意這個問題,就會出現activity執行多次oncreate()
方法的情況。在實際開發中就遇到了呼叫系統相機拍照後,activity被destory的情況,排查後發現是因為應用本身為豎屏,系統相機被啟動時會神奇的發生乙個90度旋轉變成橫屏(我明明豎直拿的手機不知道為什麼也要轉),然後又轉回來了變成豎屏狀態 ( ﹁ ﹁ ),activity就這樣被destory了,我也真是無語。
要解決這個問題首先在mainifest.xml
的activity元素中加入configchanges
屬性:
...
加入這條屬性,我們就可以重寫配置改動時執行的操作,否則android系統將自動處理(destory當前activity然後執行oncreate()
方法)。
當然我們接下來就要在對應的activity中重寫處理配置改動的方法。注意:onconfigurationchanged()
方法只會監測應用程式在anroidmainifest.xml中通過configchanges
配置的型別的改動,而對於未配置型別則系統會ondestroy()當前activity,然後重啟乙個新的activity例項。
@override
public void onconfigurationchanged(configuration newconfig)
。
ios螢幕旋轉的處理
在ios中的螢幕變換,也就是橫豎屏的轉換,雖然可以直接使用uiviewcontroller的 這些函式來響應螢幕旋轉時候的事件。之所以相應這些事件當然是為了對檢視的顯示進行處理,這種寫法對於檢視的處理並不是十分方便。還有一種方法就是覆蓋uiview的 上面的兩種方法雖然都可以實現在螢幕旋轉時候對檢視...
獲取螢幕上正在顯示的activity
用過activitymanager的童鞋估計都知道,可以從activitymanager裡面可以獲取到當前執行的所有任務,所有程序和所有服務,這是任務管理器的核心。那麼,從裡面我們可以發掘點什麼出來嗎?仔細看getrunningtasks的文件,裡面說獲取的是系統中 running 的所有task,...
獲取螢幕上正在顯示的activity
用過activitymanager的童鞋估計都知道,可以從activitymanager裡面可以獲取到當前執行的所有任務,所有程序和所有服務,這是任務管理器的核心。那麼,從裡面我們可以發掘點什麼出來嗎?仔細看getrunningtasks的文件,裡面說獲取的是系統中 running 的所有task,...