Activity 螢幕旋轉引起的銷毀與重啟

2021-08-09 09:13:48 字數 802 閱讀 6870

當發生 鍵盤開啟 或 橫豎屏切換 等配置改變的情況時,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,...