如何在应用程序被杀后从图库中获取图像?

时间:2016-11-08 20:19:43

标签: android android-intent gallery oncreate ondestroy

我正在开发一个包含代表不同屏幕的几个片段的应用程序。其中一个片段表示编辑配置文件屏幕,用户可以在其中更改其配置文件图像。更改图像的一个选项是从图库中选择图像。为此,我使用意图打开一个画廊。

action_chose_btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
            intent.setType("image/*");
            // Always show the chooser (if there are multiple options available)
            startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE_REQUEST);
        }
    });

打开图库后,我的应用程序转到后台,然后由于手机内存不足而被破坏。此意图正在编辑配置文件片段中发送。为了维护应用程序状态,我将表示Bunble中特定片段的字符串保存在onSaveInstanceState()内部活动中。重新创建活动时,我会检查onPostCreate()方法中的包,并将正确的片段添加到活动中。

 @Override
protected void onPostCreate(Bundle savedInstanceState) {
    Log.i(TAG, "On post create");

        if (savedInstanceState.getInt(FRAGMENT_STATE)== MY_STATUS){
            state = MY_STATUS;
            displayMyStatus();
            footer.setSelected(MY_STATUS);
            footer.displayButtons();
        }else if(savedInstanceState.getInt(FRAGMENT_STATE)== TEAM_STATUS){
            state = TEAM_STATUS;
            displayTeamStatus();
            footer.setSelected(TEAM_STATUS);
            footer.displayButtons();
        }else if(savedInstanceState.getInt(FRAGMENT_STATE)== MY_PROFILE){
            state = MY_PROFILE;
            displayMyProfile();
            footer.setSelected(MY_PROFILE);
            footer.displayButtons();
        }else if(savedInstanceState.getInt(FRAGMENT_STATE)== EDIT_PROFILE){
            state = EDIT_PROFILE;
            displayEditMyProfile();
            footer.setSelected(MY_PROFILE);
            footer.displayButtons();
        }
    super.onPostCreate(savedInstanceState);
}

当我打开图库时,由于设备内存不足,我的活动被破坏了。当我从库中选择图像时,我的活动被重新创建,我按照上面描述的方式添加正确的片段。但是我不确定在活动娱乐期间会发生什么,我从画廊得到的结果。

我尝试了onActivityResult()方法,但它没有被触发。我猜它必须在发送图库意图的完全相同的片段中触发。

我的问题是:

图库中请求的图片会发生什么?我应该如何在已重新创建的活动中获取它?我在哪里可以找到从图库中选择的图像?

1 个答案:

答案 0 :(得分:0)

通过将图库意图移动到活动类来解决问题。然后触发onActivityResult()方法。