启动相机代码:
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(imageFile));
startActivityForResult(intent, CAMERA);
以下是我通过给 OnCreate OnDestory 生命周期方法打日志测试出来的结果,测试机小米PAD:
Activity 启动相机
然后Activity 就执行OnDestory 退出了
Activity 又重新执行了OnCreate 方法
紧接着 OnActvityResult 方法被调用了
imageFile 为 null 拍照失败
通过观察studio 内存区域发现app 占用的内存很高,打开相机拍照后为什么会把当前Activity 退出呢?? 大神遇到过这样的问题吗??
这两个方法并不是Activity每次都会调用的,我们注意到onCreate和onRestoreInstanceState都有个Bundle类型的参数,那么这个参数是谁传来的呢?肯定是onSaveInstanceState传来的。
当我们的Activity在未经我们自己finish的情况下被结束(没有被回收也会执行onSaveInstanceState),onSaveInstanceState方法就会被调用。此时我们就可以利用outState参数来存储我们的数据,当onCreate或者onRestoreInstanceState(只有Activity被真正回收后才调用)时,将这些数据拿出来重新赋值给我们的成员变量,这样,就算是Activity被销毁了,我们依然可以重新获得相关变量的值。