繁体   English   中英

三星Galaxy Tab 2 10.1在相机意图拍照后杀死了一个过程

[英]Samsung Galaxy Tab 2 10.1 kills process after taking a picture in camera intent

我注意到我的设备非常奇怪的行为。

我用动作MediaStore.ACTION_IMAGE_CAPTURE创建了一个新的意图

然后我开始为结果激活。 但是,此刻我从相机拍摄照片,我的应用程序从DDMS视角的过程中消失。 然后在几秒钟内再次运行。

有趣的是 - 正确调用onActivityResult并接收图像。 但我有一些单调,在其字段中包含一些值。 重新启动进程后,这些单例会重新初始化并丢失所有值。

其他设备也没有问题 - 无论是平板电脑还是手机。

这是一个已知的bug吗? 何以阻止Galaxy Tab 2 10.1上的进程重启?

提前致谢!

更新:下面是我启动相机意图的代码

private void startCameraIntent() {
    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.US).format(new Date());
    String imageFileName = JPEG_FILE_PREFIX + timeStamp + "_";
    File albumFile;
    if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())){
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO){
            albumFile = new File (Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), FOLDER_NAME);
        } else {
            albumFile = new File(Environment.getExternalStorageDirectory()+CAMERA_DIR+FOLDER_NAME);
        }
        if (albumFile != null){
            if (!albumFile.mkdirs()){
                if (!albumFile.exists()){
                    showToast(getApplicationContext().getString(R.string.sFailedToCreateDirectory));
                    return;
                }
            }
        }
        File imageFile = null;
        try {
            imageFile = File.createTempFile(imageFileName, JPEG_FILE_SUFFIX, albumFile);
            mCurrentPhotoPath = imageFile.getAbsolutePath();
        } catch (IOException e) {
            e.printStackTrace();
        }
        Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(imageFile));
        fileUri = Uri.parse(mCurrentPhotoPath);

        startActivityForResult(cameraIntent, ACTION_CAPTURE_IMAGE);
    } else {
        showToast(getApplicationContext().getString(R.string.sSDNotReady));
    }
}

这是一个已知的bug吗?

这不是一个bug。 如果您的应用程序不在前台,则可以随时终止其进程。

何以阻止Galaxy Tab 2 10.1上的进程重启?

你不能。 当它不在前台时,您的过程可以随时消失。 因此,例如,如果用户按下HOME,稍后Android终止您的进程,之后用户尝试通过recent-tasks列表返回您的应用程序,您将看到相同的行为。 您的应用需要能够处理此问题。

我们欢迎您直接尝试使用Camera ,而不是启动第三方活动,因为这样可以让您的应用程序保持在前台。 但这比你正在做的更复杂。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM