2015-04-17 55 views
0

我在android 4.2或更高版本上測試過,它沒有錯誤。但是當我在android 4.1上測試時,我保存圖像後再次調用Camera Intent。在應用我的流動過程包括: MainActivity - 碎片 - ActivityInfo - 相機 當我點擊的片段拍照鍵,它開始意圖(ActivityInfo),並把多餘的(名字從意圖和這個名字的時候我選擇相機或畫廊)。之後,ActivityInfo啓動,並且在onCreate函數中我獲得了額外的值並檢查它是否是相機的名稱,我將啓動相機意圖。當我完成捕捉照片並保存照片時,它完成()相機意圖並再次調用相機意圖。當我斷開與cabe的設備時出現這個錯誤,當設備連接到cabe時它會消失。Camera Intent在Android中完成後再次調用?

我無法調試,因爲當我時裝置插入顯示沒有問題,它只是有錯誤,當我拔掉式。我在ImageActivity的onCreate中添加了行代碼日誌消息,當出現該錯誤時,我插入設備並捕獲並保存圖像,攝像機完成並在onCreate中顯示日誌消息出現在屏幕上,然後Camera再次出現。

+2

你可以張貼一些代碼 - 上

更多信息? –

+0

請發佈您的代碼,以便我們可以精確地修復您的錯誤。 –

回答

1

我敢打賭,這個問題沒有任何關係特別Android版本,但對於其他原因:您的活動可能被摧毀,當它返回拍攝圖像後進行前景重新創建。因爲你正在從onCreate()調用startActivity() - 它只是再次運行。

這是一個常見的錯誤:沒有處理和接受saveInstanceState參數,指示當系統已經殺死它時,如果當前活動/片段被重新創建,因爲它在內存壓力下不在前臺。 http://developer.android.com/training/basics/activity-lifecycle/recreating.html#RestoreState

代碼檢查savedInstanceState

if (savedInstanceState == null) { 
      Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
      startActivityForResult(cameraIntent, CAMERA_REQUEST); 
     } 
+0

感謝分享。所以如果你說內存是一個原因,那麼爲什麼我連接設備,錯誤不會出現。 – user1916184

+0

我不知道爲什麼你當插入設備沒有問題,但我相信,你不需要浪費你的時間對這種想法......問題不在於記憶。問題在於你沒有處理臨時記憶壓力的常見情況。您可以通過在oncreate()中打印Toast消息來驗證是否確實存在這種情況,該消息顯示保存的實例狀態參數是否爲空。這樣,你會看到它不需要連接 –

+0

按照http://developer.android.com/training/basics/activity-lifecycle/recreating.html和我已經完成。保存onSaveInstanceState函數中的活動狀態或每個數據的狀態並在onCreate函數中檢查它。 – user1916184

相關問題