Стек активности не очищается - PullRequest
0 голосов
/ 08 октября 2018

У меня странная проблема

  1. Вызывается действие A, и к нему присоединяется фрагмент A.
  2. Вызывается метод (onCreate, onStart, onResume).

: я получил уведомление и вкладываю вкладку с намерением для действия A.

Blockquote (intent.addFlags (Intent.FLAG_ACTIVITY_CLEAR_TOP);)

  1. Когда открывается действие A, вызывается следующий метод.
  2. ( onPause , onCreate, onStart, onResume (фрагмент отключен) и затем onDestroy)

    Почему для уничтожения вызывается для старого экземпляра действия, когда я уже вызвал CLEAR_TOP.

Может кто-нибудь помочь мне, что может быть причиной этого?

Как я могу проверить, есть ли уже какой-либо экземпляр, ожидающий в стеке, или как я могу очистить все?Я не могу использовать singleInstance, так как на вкладке уведомлений я перенаправляю на другой фрагмент.

1 Ответ

0 голосов
/ 08 октября 2018

Если вы используете только FLAG_ACTIVITY_CLEAR_TOP, тогда все экземпляры действий будут очищены, обратно к , включая , экземпляр цели Activity, а затем новый экземпляр цели Activity будетбыть создан.

Если вы хотите повторно использовать существующий экземпляр, вам нужно указать и FLAG_ACTIVITY_CLEAR_TOP, и FLAG_ACTIVITY_SINGLE_TOP следующим образом:

intent.addFlags(FLAG_ACTIVITY_CLEAR_TOP|FLAG_ACTIVITY_SINGLE_TOP);

Это будеточистить все экземпляры действий обратно (кроме , исключая цель Activity, и вызвать onNewIntent() для цели Activity с новым Intent.

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