[编辑:问题已解决。请参见我的答案 https://stackoverflow.com/a/9791832/839965 below.]
在我的应用程序中,我调用系统相机拍照,然后处理结果onActivityResult
。你知道,平常的。它曾经有效,但现在我的通话活动在拍照时被终止。具体来说,onDestroy()
在我按下相机快门后立即调用我的活动。照片确实已拍摄并保存(我已检查文件是否已写入 SD 卡上)。在我接受照片后,而不是返回到调用活动并调用onActivityResult
,活动堆栈中的前一个活动被调用。我在 logcat 中没有看到任何异常。我的自定义异常处理程序不会被调用。如果重要的话,我的应用程序还包含一项侦听 GPS 更新的服务,但我取消注册了所有接收器onPause()
.
这是调用堆栈MyCallingActivity.onDestroy()
:
Thread [<1> main] (Suspended (breakpoint at line 303 in NewPlaceDetailsActivity))
NewPlaceDetailsActivity.onDestroy() line: 303
ActivityThread.performDestroyActivity(IBinder, boolean, int, boolean) line: 2663
ActivityThread.handleDestroyActivity(IBinder, boolean, int, boolean) line: 2694
ActivityThread.access$2100(ActivityThread, IBinder, boolean, int, boolean) line: 117
BinderProxy(ActivityThread$H).handleMessage(Message) line: 968
ActivityThread$H(Handler).dispatchMessage(Message) line: 99
Looper.loop() line: 130
ActivityThread.main(String[]) line: 3687
Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method]
Method.invoke(Object, Object...) line: 507
ZygoteInit$MethodAndArgsCaller.run() line: 842
ZygoteInit.main(String[]) line: 600
NativeStart.main(String[]) line: not available [native method]
如果您想知道,这就是我开始相机活动的方式:
protected void startCamera() {
createPhotoDirsIfNeeded();
String fileName = "temp.jpg";
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.TITLE, fileName);
m_capturedImageUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
m_photoFileName = APP_PHOTO_PATH + "/" + DateFormat.format(DATE_FORMAT, Calendar.getInstance().getTime()) + ".jpg";
File picFile = new File(m_photoFileName);
if(picFile.exists()) {
picFile.delete();
}
// start the camera activity
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(picFile));
startActivityForResult(intent, IntentHelper.REQUEST_TAKE_PHOTO);
}
我如何找出为什么我的活动被终止,并从堆栈中删除而不是再次创建?