2012-07-16 62 views
4

後的onCreate叫我嘗試打開攝像機方式如下:之前和onActivityResult

... 
    private void runCamera() { 
     String storageState = Environment.getExternalStorageState(); 
     if (storageState.equals(Environment.MEDIA_MOUNTED)) { 

      Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
      File imageFile = new File(Singleton.instanse.mPushFilePath); 
      mImageFileUri = Uri.fromFile(imageFile); 
      intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, 
        mImageFileUri); 
      startActivityForResult(intent, CAMERA_RESULT); 
    } 
... 

,如果我都跑這種方法未來方法:

07-16 19:46:22.264: I/System.out(6875): -onPause 
07-16 19:46:26.104: I/System.out(6875): -onStop 

我使照片,運行完下一個方法:

07-16 19:46:41.217: I/System.out(6875): -onDestroy 
07-16 19:46:41.284: I/System.out(6875): -onCreate 
07-16 19:46:41.291: I/System.out(6875): -onStart 
07-16 19:46:41.295: I/System.out(6875): -onActivityResult 
07-16 19:46:41.295: I/System.out(6875): -onResume 
07-16 19:46:41.295: I/System.out(6875): -onPostResume 
07-16 19:46:41.522: I/System.out(6875): -onPause 
07-16 19:46:41.522: I/System.out(6875): -onStop 
07-16 19:46:41.522: I/System.out(6875): -onDestroy 
07-16 19:46:41.604: I/System.out(6875): -onCreate 
07-16 19:46:41.612: I/System.out(6875): -onStart 
07-16 19:46:41.616: I/System.out(6875): -onResume 
07-16 19:46:41.616: I/System.out(6875): -onPostResume 

爲什麼onDestroy會運行兩次?如何解決它? 在Android 2.2中發現此問題。在Android 2.3.3中,onDestroy從來沒有叫過!

+0

請使用'Android的activity'標籤,而不是'activity'標籤:) – 2012-07-16 15:59:28

+2

這可能是有用的http://stackoverflow.com/questions/10411009/activity-killed-oncreate-通過意圖後拍攝圖片/ 10411504#10411504 – Akram 2012-07-16 16:13:13

+0

Akki,你真的幫了我!謝謝! – 2012-07-17 12:28:42

回答

17

其實相機會導致您的活動方位的變化,這就是爲什麼你的活動已被破壞並重新創建。

在你的清單文件中添加它會阻止方向改變,你的活動不會被破壞和重新創建。

<activity 
    android:name=".YourActivity" 
    android:configChanges="orientation|keyboardHidden" 
    android:screenOrientation="portrait" > 
</activity> 

Activity killed/onCreate called after taking picture via intent

+0

非常感謝[Akki](http://stackoverflow.com/users/932225/akki)的幫助 – 2012-07-17 12:33:50

+0

這是問題的正確答案。謝謝 – 2012-11-13 21:03:52

+0

如果您不能強制活動處於特定的方向,您會做什麼?我遇到了類似的問題,無法強制定位... – Justin 2013-02-26 16:08:53

3

onDestroy不能保證被調用。確保在而不是onStoponDestroy中保存持久狀態。您絕不應該依賴onStoponDestroy進行調用。