之前和之后onActivityResult所谓的onCreate(onCreate called b

2019-06-26 07:23发布

我尝试打开摄像机方式如下:

...
    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

为什么运行的onDestroytwiсe? 如何解决呢? 这个问题在Android 2.2的发现。 在安卓2.3.3的onDestroy从来没有所谓的!

Answer 1:

实际上,相机会导致您的活动方位的变化,这就是为什么你的活动已被破坏并重新创建。

在你的manifest文件添加这将防止取向的变化,你的活动将不会被摧毁和重建。

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

活动通过杀害意图拍照后/所谓的onCreate



Answer 2:

onDestroy不能保证被调用。 请务必保存在持久状态onPause而非onStoponDestroy 。 你永远不应该依赖任何onStoponDestroy被调用。



Answer 3:

的onDestroy不能保证可以在任何Android版本执行,如果这样做你应该做的事情快速回报

也看到这个活动的OnDestroy从不叫什么名字?



文章来源: onCreate called before and after onActivityResult