应用程序被杀死后如何从图库中获取图像?
How to get an image from gallery after application gets killed?
我正在开发一个应用程序,其中包含多个代表不同屏幕的片段。其中一个片段代表编辑个人资料屏幕,用户可以在其中更改他的个人资料图像。更改图像的选项之一是 select 来自图库的图像。为此,我使用意图打开一个画廊。
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);
}
});
打开图库后,我的应用程序进入后台,然后由于 phone 内存不足而被销毁。此意图是从编辑配置文件片段中发送的。为了维护应用程序状态,我将代表特定片段的字符串保存在 activity 内 onSaveInstanceState()
内的 Bunble 中。重新创建 activity 时,我检查 onPostCreate()
方法中的包并将正确的片段添加到 activity。
@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);
}
当我打开图库时,由于我的设备内存不足,我的 activity 被破坏了。当我从图库中选择图像时,我的 activity 被重新创建,并且我按照上述方式添加了正确的片段。但是,我不确定在 activity 娱乐期间会发生什么,以及我从画廊获得的结果。
我尝试了 onActivityResult()
方法,但是它没有得到 triggered.I 猜测它必须在发送意图到画廊的完全相同的片段中触发。
我的问题是:
从画廊请求的图像会发生什么情况,我应该如何在重新创建的 activity 中获取它?我在哪里可以找到 select 从画廊编辑的图片?
通过将图库意图移至 activity class 解决了问题。然后onActivityResult()
方法被触发。
我正在开发一个应用程序,其中包含多个代表不同屏幕的片段。其中一个片段代表编辑个人资料屏幕,用户可以在其中更改他的个人资料图像。更改图像的选项之一是 select 来自图库的图像。为此,我使用意图打开一个画廊。
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);
}
});
打开图库后,我的应用程序进入后台,然后由于 phone 内存不足而被销毁。此意图是从编辑配置文件片段中发送的。为了维护应用程序状态,我将代表特定片段的字符串保存在 activity 内 onSaveInstanceState()
内的 Bunble 中。重新创建 activity 时,我检查 onPostCreate()
方法中的包并将正确的片段添加到 activity。
@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);
}
当我打开图库时,由于我的设备内存不足,我的 activity 被破坏了。当我从图库中选择图像时,我的 activity 被重新创建,并且我按照上述方式添加了正确的片段。但是,我不确定在 activity 娱乐期间会发生什么,以及我从画廊获得的结果。
我尝试了 onActivityResult()
方法,但是它没有得到 triggered.I 猜测它必须在发送意图到画廊的完全相同的片段中触发。
我的问题是:
从画廊请求的图像会发生什么情况,我应该如何在重新创建的 activity 中获取它?我在哪里可以找到 select 从画廊编辑的图片?
通过将图库意图移至 activity class 解决了问题。然后onActivityResult()
方法被触发。