呼叫系統照相機Activity被銷燬問題解決
在專案中需要啟用系統照相機來拍照。本來很容易的一個問題。但在適配中出現了問題。
簡單說一下問題:
有些手機拍照成功,有些手機拍完照後確定返回後activity資料丟失,被銷燬了。
問題查詢:
經過程式碼查詢發現,當這些出問題的手機被呼叫系統手機拍照時,當前activity被銷燬了之後又被重新建立了。即Acitivity 執行了ondestory()-->onCreate(),所以Activity被重新建立了從而內部的資料丟失,而按照正常的邏輯該Activity應該入後臺堆疊。一開始以為是系統啟用照相機記憶體不夠自動銷燬回收。可有些手機不會出現該問題。很無奈。
之後經過本人細心研究activity的生命週期才恍然大悟,原來當手機橫豎屏時系統會重新建立一個activity,這就是為什麼上個activity會ondestory()-->onCreate()。但為什麼有些手機會執行有些不會呢。問題就出在橫豎屏上。因為有些手機的系統照相機弄的很炫會自動旋轉90度,從而導致了橫豎屏的發生(--!看來最潮的也不是好東西,苦了我們這些碼農)。這就是為什有些手機會發生有些不會。跟系統照相機是否旋轉有關係。
最後貼上解決方案。
AndroidMainifest.xml中加入
<activity
android:name=".Activity"
android:launchMode="singleTask" android:configChanges="orientation|keyboardHidden"
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" />
<activity
複寫acitivity的onConfigurationChanged方法
@Override
public void onConfigurationChanged(Configuration newConfig) {
其實這裡什麼都不要做
super.onConfigurationChanged(newConfig);
}
如果是比較低版本就可以這樣,如果較高版本可能需要加入其它屬性才能觸發onConfigurationChanged,即android:configChanges="orientation|keyboardHidden|screenSize"