Как получить изображение из галереи после того, как приложение будет убито?
Я разрабатываю приложение, которое содержит несколько фрагментов, представляющих разные экраны. Один из фрагментов представляет собой экран редактирования профиля, где пользователь может изменить изображение своего профиля. Один из вариантов изменения изображения - выбрать изображение из галереи. Для этого я использую намерение открыть галерею.
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 ответ
Решил проблему, переместив намерение галереи в класс деятельности. затем onActivityResult()
метод срабатывает.