Я исследовал многочисленные сообщения об активности back stacks, а также веб-сайт разработчика Android, но до сих пор не могу найти решение проблемы, с которой я сталкиваюсь.Активность Android Back Stack Проблема с навигацией
Сценарий:
У меня есть Activity A
, я перейти к Actvity B
, от A, а затем нажмите кнопку назад, чтобы снова перейти к Activity A
:
Actvity A
->Activity B
->Actvity A
Ничего необычного ..
Проблема
Когда я нажимаю кнопку назад, чтобы перейти к от Activity B
->Activity A
, Activity B
не разрушается сразу, как и следовало ожидать, что переходит в состояние паузы, и это то, где у меня есть странная проблема. Если я хочу, чтобы вернуться к Activity B
из Activity A
и IFActivity B
все еще находится в состоянии паузы все его методы жизненного цикла называются при использовании startActivity(B)
из Activity A
:
Activity B
- onCreate()
> >onStop
>onDestroy
< - почему это происходит
На данный момент для меня он больше не должен существовать, и я не могу объяснить, почему он прошел все его методы жизненного цикла, а не только методы жизненного цикла инициализации. Выпадение из этого странного поведения состоит в том, что активность все еще видна на экране, но не заполняет RecyclerView
, который в первой инициализации сделал так, как ожидалось. В этот момент, если я вернусь, Activity B
снова войдет в состояние паузы.
Если Activity B
находится в состоянии паузы (Activity A
находится на вершине стека) и структура заканчивается Activity B
через жизненного цикла обратных вызовов, и я снова перейти к Activity B
от А он работает, как ожидалось (RecyclerView заселен), в основном свежий экземпляр всегда работает отлично.
Все, что я могу предположить, когда речь идет о диаграмме активности Lifecycle, что Activity B
входит в состояние паузы, однако разрушается, не вызывая onStop
, onDestroy
и т.д .. означает любую активность операции очистки у меня есть в этих обратных вызовов не происходит?
Вещей я Пробовал
Изменения различных Intent
фильтров и их комбинации, при запуске Activity B
:
FLAG_ACTIVITY_NEW_TASK
FLAG_ACTIVITY_CLEAR_TOP
FLAG_ACTIVITY_SINGLE_TOP
Вызова finish()
когда onBackPressed()
вызывается в Activity B
Различных других пальцев скрещенных и изменения надежд, ничего не работает.
Помогите пожалуйста!
удалить 'super.onBackPressed()' from' onBackPressed() 'in ** Activity A ** ниже - это код для' onBackPressed() '' @Override public void onBackPressed() {moveTaskToBack (true); } ' –
@jatDevta Я не уверен, как это изменит что-либо, Activity A, не проблема. Во-вторых, у меня есть рисование навигации в Activity A, добавив этот метод moveTaskToBack (true); 'toBackPressed()' просто закроет приложение, вместо того, чтобы закрывать ящик навигации, если он будет открыт, а я нажму? –