【问题标题】:Android ACTION_IMAGE_CAPTURE restarts applicationAndroid ACTION_IMAGE_CAPTURE 重新启动应用程序
【发布时间】:2015-05-28 17:11:03
【问题描述】:

当我在应用程序中使用相机拍照时,应用程序/活动会在我保存拍摄的照片时重新启动(并且所有其他活动也会关闭)。另外,当我调试应用程序时,调试器会在拍照后断开连接。

Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);

File file = getOutputMediaFile(1);
picUri = Uri.fromFile(file);
i.putExtra(MediaStore.EXTRA_OUTPUT, picUri);

startActivityForResult(i, 0);

我的 onActivityResult:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) {
    super.onActivityResult(requestCode, resultCode, imageReturnedIntent);
    if (resultCode == Activity.RESULT_OK) {
        switch (requestCode) {
            case 0:
                mProgress.show();
                loadCameraImage();
                break;

            case 1:
                mProgress.show();
                Uri uri = imageReturnedIntent.getData();
                loadFileImage(uri);
                break;
        }
    }
}

【问题讨论】:

    标签: android android-intent camera


    【解决方案1】:

    Android 必须为相机应用释放内存,您的进程已终止。当相机应用程序退出并且控制权返回到您的应用程序时,它将自动重新启动。这是完全正常的,并且在许多其他情况下,当您的应用不在前台时,您的应用进程将被终止。

    【讨论】:

    • 如何确保不会发生这种情况。当我昨天处理它时,应用程序没有重新启动..
    • @BartBergmans:“我怎样才能确保这不会发生”——你不能。同样,这是完全正常的行为。如果您的应用没有处理这种情况,您需要修复您的应用。 “当我昨天处理它时,应用程序没有重新启动”——Android 将终止哪个进程以释放系统 RAM,这取决于周围的进程及其各种状态。在这种情况下,您正在使用的相机应用程序可能需要一个大堆,从而迫使 Android 更积极地终止其他进程来处理相机应用程序的需求。
    • 但是我正在使用来自stackoverflow.com/questions/16026818/…(最佳答案)的代码来绘制我的 ActionBar,所以如果应用重新启动,在再次绘制 actionbar 之前,actionbar 看起来很丑。
    • @BartBergmans:动作栏在其他场景中也会看起来很丑,不仅仅是这个。例如,用户在您的应用程序中,按 HOME,Android 终止您的进程,并且用户返回到您的应用程序(例如,20 分钟后)。您的流程将被重新创建,用户将被带到她上次参加的活动,您将获得同样丑陋的结果。这不是拍照所独有的。在这种情况下,要么忍受丑陋,要么修复你的操作栏重写以不那么丑陋。
    • 当我从 HOME 再次打开应用程序时,操作栏看起来不错。我怎样才能重写那个每次都会显示好的操作栏的函数?
    猜你喜欢
    • 2013-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多