我按照以下方式尝试打开相机:
...
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运行twiсe?怎么解决? 在Android 2.2中发现此问题。在Android 2.3.3 onDestroy中从未调用过!
答案 0 :(得分:16)
实际上,相机会导致您的活动方向发生变化,这就是您的活动被销毁和重建的原因。
在您的清单文件中添加它会阻止方向更改,并且您的活动不会被销毁和重新创建。
<activity
android:name=".YourActivity"
android:configChanges="orientation|keyboardHidden"
android:screenOrientation="portrait" >
</activity>
Activity killed / onCreate called after taking picture via intent
答案 1 :(得分:3)
onDestroy
无法保证被调用。确保在onPause
而不是onStop
和onDestroy
中保存持久状态。您永远不应该依赖onStop
或onDestroy
来调用。
答案 2 :(得分:1)
onDestroy不保证在任何Android版本上执行,如果确实如此,你应该快速做一些并返回