执行相机意图时 Activity 被终止

2024-01-07

[编辑:问题已解决。请参见我的答案 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);
}

我如何找出为什么我的活动被终止,并从堆栈中删除而不是再次创建?


好的,我发现问题了。问题不在于该活动被终止,而在于它没有被恢复。我意识到当您的活动在清单中声明时可能会发生这种情况android:noHistory="true"。因此,该活动在被杀死后就会从堆栈中删除,并显示前一个活动。

我删除后noHistory参数,使用相机后该活动再次开始出现。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

执行相机意图时 Activity 被终止 的相关文章

随机推荐