Как получить изображение из галереи после того, как приложение будет убито?

Я разрабатываю приложение, которое содержит несколько фрагментов, представляющих разные экраны. Один из фрагментов представляет собой экран редактирования профиля, где пользователь может изменить изображение своего профиля. Один из вариантов изменения изображения - выбрать изображение из галереи. Для этого я использую намерение открыть галерею.

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() метод срабатывает.

Другие вопросы по тегам