1. 程式人生 > >呼叫系統照相機Activity被銷燬問題解決

呼叫系統照相機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"