Как сохранить один экземпляр активности, но иметь возможность обновлять представление? - PullRequest
35 голосов
/ 15 ноября 2011

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

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

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

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

  • gallery - запустите эту игру с помощью imageA.

  • camera - запустите эту работу с imageB.

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


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

Ответы [ 2 ]

78 голосов
/ 15 ноября 2011

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

<activity ..
      android:launchMode= "singleInstance" />
35 голосов
/ 02 декабря 2012

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...