Путаница в жизненном цикле приложений Android - PullRequest
0 голосов
/ 02 апреля 2012

У меня есть приложение, которое повторно использует Activity неизвестное количество раз. Он работает

a> b1 || c1> b2 || c2> ...

Если я перейду a> b1> b2> b1, мое приложение по-прежнему отображает список b1 на экране, но если я щелкну по нему, оно приведет меня к соответствующему действию b2. arrayList, который я использую для хранения данных для b, должен быть восстановлен для правильного экземпляра b.

Я читал более http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle но я не думаю, что onPause и onResume будут работать, так как я снова использую ту же активность.

1 Ответ

0 голосов
/ 02 апреля 2012

Все зависит от того, как вы перемещаетесь между действиями.

Когда вы нажимаете назад или делаете finish(), вы уничтожаете свою деятельность. Я верю, что в этом случае вы делаете finish() на b2 и возвращаетесь на b1.

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

Когда вы находитесь на a и переходите на b1, ваш стек остается таким:

b1
a

Когда вы переходите на b2, ваш стек становится таким

b2
b1
a

Тогда, если вы сделаете еще один startActivity() для b1, вы получите

b1
b2
b1
a

Однако, если вы сделаете finish() или нажмете назад, вы фактически уничтожите b2 и вернетесь к первому экземпляру, который вы получили от b1. Помните: в стеке есть экземпляры действий, которые могут содержать разные данные.

...