Как проверить, находится ли класс активности в заднем стеке, и соответствующим образом управлять им в Android?

Я хочу проверить, находится ли объект с определенным классом в заднем стеке. Если это так, я буду использовать FLAG_ACTIVITY_CLEAR_TOP, если нет, я хочу получить доступ к root и нажать класс.

Предположим, что у меня есть A, C, D в стеке, и я хочу добавить B. Поскольку B не существует в стеке (здесь), я хочу, чтобы стек стал A, B (очистив C, D и нажав B).

Если бы у меня в стеке были A, B, C, D, он бы извлек C, D без нажатия B.

Есть ли способ сделать это, не очищая все в стеке и не нажимая класс A с параметром Intent «GoToClass» и не нажимая класс «GoToClass» после загрузки -root- A?

Из документации Android:

public static final int FLAG_ACTIVITY_CLEAR_TOP

Если установлено, и запускаемое действие уже выполняется в текущей задаче, то вместо запуска нового экземпляра этого действия все другие действия поверх него будут закрыты, и это намерение будет доставлено в (сейчас на вверху) старая деятельность как новое намерение.

Например, рассмотрим задачу, состоящую из действий: A, B, C, D. Если D вызывает startActivity() с намерением, которое разрешается в компонент действия B, то C и D будут завершены, а B получит заданное намерение. , в результате чего стек теперь выглядит так: A, B.


person frankish    schedule 27.10.2013    source источник


Ответы (1)


Когда действие уничтожается или удаляется из заднего стека, последний метод, который будет вызываться, находится в onDestroy(). Теперь в методе onDestroy() сохраните переменную и сохраните ее в своих Общих настройках или создайте переменную класса и проверьте, что значение в этой переменной не равно нулю. Если переменная имеет какое-то значение, то определенно был вызван метод onDestroy(), и ваша активность больше не находится в заднем стеке.

person Jitender Dev    schedule 27.10.2013