Camera Intent调用onDestroy()

时间:2016-05-31 12:53:08

标签: java android android-camera-intent

在我的应用中,我想点击相机中的照片,并希望通过URI方法从相机中获取内容onActivityResult()

在我的应用中,我使用以下方法获取内容网址。

Uri currImageURI;
ArrayList<Uri> imageItems = new ArrayList<Uri>();
    @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            // TODO Auto-generated method stub
            if((requestCode == SELECT_PICTURE_FROM_CAMERA && resultCode == RESULT_OK) || (requestCode == SELECT_PICTURE_FROM_LIB && resultCode == RESULT_OK)) {
                currImageURI = data.getData();
                imageItems.add(currImageURI);
                Toast.makeText(UpdateMyServiceActivity.this, "Image added.", Toast.LENGTH_LONG).show();
            }
        }

我在ArrayList添加了uri(因为用户可以上传多张图片)。

我的应用中有保存按钮。

当用户点击“保存”按钮时,我会将imageItems传递给AsyncTask以上传图片到服务器。

但这是问题。

当用户点击“保存”按钮时,我收到 imageItems null

我调试了我的应用。 将URI添加到ArrayList后,将调用Activity个方法。

onResume()
onPause()
onStop()
onDestroy()
onCreate()
onStart()
onResume()

这就是我得到arrayList null的原因。

如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

currImageURI = data.getData();

如果您使用ACTION_IMAGE_CAPTURE,则代码不正确。 ACTION_IMAGE_CAPTURE不会返回Uri,但会有少量相机应用。相反,您在EXTRA_OUTPUT ACTION_IMAGE_CAPTURE本身提供Intent。然后,您保留使用EXTRA_OUTPUT时使用的任何值,然后在onActivityResult()中查看您的图像。

  

这就是我得到arrayList null的原因。

您的活动正在销毁并重新创建,可能是因为您的流程在相机应用处于前台时终止。这是完全正常的。只要您的应用不在前台,您的流程就可以终止。

  

如何解决这个问题?

通过已保存的实例状态ArrayList保留Bundle