Как сохранить один экземпляр действия, но иметь возможность обновлять представление?
В моей ситуации есть один случай, когда мне нужно убедиться, что активность работает только по одному.
Я обнаружил, что если я устанавливаю LauchMode
активности, я могу достичь цели единственного экземпляра, но он не будет обновлять представление активности.
Эта активность запускается startActivityForResult
, и мы отправляем URI с намерением для активности.
Давайте обсудим с этим конкретным случаем:
Мой запрос не должен уничтожать старую активность, но активность, которая только что получила новую информацию о намерениях, должна обновить представление.
Я нашел новый метод onNewIntent
.
Этот метод может обновить намерение до возобновления. Я попробую.
Ответы
Ответ 1
У вас может быть Activity с атрибутом manifest элемента singleInstance.
Как только активность возобновляется, вызывается onResume. Вы можете обновить представление с новым изображением и аннулировать старый вид.
<activity ..
android:launchMode= "singleInstance" />
Ответ 2
В вашем манифесте используйте android:launchMode="singleTask"
вместо android:launchMode="singleInstance"
. Использование singleInstance возвращает только существующий экземпляр, если он находится в верхней части стека. singleTask, с другой стороны, вернитесь к существующему экземпляру активности, так как он всегда находится в корне задачи.
Затем, когда ваш экземпляр запущен, переопределите onNewIntent
для обновления вашего пользовательского интерфейса в соответствии с новым намерением.
Подробнее см. документацию Andorid.