Подтвердить что ты не робот

Как сохранить один экземпляр действия, но иметь возможность обновлять представление?

В моей ситуации есть один случай, когда мне нужно убедиться, что активность работает только по одному.

Я обнаружил, что если я устанавливаю LauchMode активности, я могу достичь цели единственного экземпляра, но он не будет обновлять представление активности.

Эта активность запускается startActivityForResult, и мы отправляем URI с намерением для активности.

Давайте обсудим с этим конкретным случаем:

  • галерея - эта работа с изображением.

  • камера - эта работа с изображением.

Мой запрос не должен уничтожать старую активность, но активность, которая только что получила новую информацию о намерениях, должна обновить представление.


Я нашел новый метод onNewIntent. Этот метод может обновить намерение до возобновления. Я попробую.

4b9b3361

Ответ 1

У вас может быть Activity с атрибутом manifest элемента singleInstance. Как только активность возобновляется, вызывается onResume. Вы можете обновить представление с новым изображением и аннулировать старый вид.

<activity ..
      android:launchMode= "singleInstance" />

Ответ 2

В вашем манифесте используйте android:launchMode="singleTask" вместо android:launchMode="singleInstance". Использование singleInstance возвращает только существующий экземпляр, если он находится в верхней части стека. singleTask, с другой стороны, вернитесь к существующему экземпляру активности, так как он всегда находится в корне задачи.

Затем, когда ваш экземпляр запущен, переопределите onNewIntent для обновления вашего пользовательского интерфейса в соответствии с новым намерением.

Подробнее см. документацию Andorid.