Android Activity-Lifecycle ... как избежать onDestroy ()? - PullRequest
1 голос
/ 16 сентября 2011

У меня есть приложение, которое использует ActicityGroup, чтобы иметь стек действий. Если я начинаю новую деятельность, я делаю это как дочерний элемент моей группы действий. Давайте предположим, что я нахожусь в моей начальной деятельности (1), и я начинаю новую (2), так вот как это называется:

(1): onPause ()

(2): onCreate (), onStart (), onResume ()

до тех пор, пока всё здесь как есть. если я нажму кнопку BackButton, стек будет следующим:

(2): onPause (), onStop (), onDestroy ()

(1): onStop (), onDestroy () [sic]

(1): onCreate (), onStart (), onResume ()

Я не вижу причин, во-первых, почему (1) следует выполнить onStop и onDestroy () для повторного создания заново, а во-вторых, почему onRestart никогда не вызывается при (1).

Есть ли у кого-нибудь причина такого поведения? Могу ли я как-нибудь «отменить» вызовы onStop () или onDestroy ()? любая идея оценена

Ответы [ 4 ]

5 голосов
/ 16 сентября 2011

Попробуйте использовать FLAG_ACTIVITY_SINGLE_TOP при запуске дочерней деятельности, например:

    Window window = getLocalActivityManager().startActivity(id,
            intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP));

Дополнительная информация здесь:

http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_SINGLE_TOP

0 голосов
/ 04 марта 2016

Вы можете избежать метода Activity onDestroy, если нажать кнопку назад очень простым способом,

Просто упомяните

android:persistent="true"

для своей активности, которая должна предотвратить разрушение вашей активностиболее подробно вы можете посетить ниже SO сообщение

Предотвратить разрушение деятельности как можно дольше

0 голосов
/ 16 сентября 2011

Onstop() и onDestroy() не будут звонить, пока вы не закончили работу.Ondestory() призвал освободить ресурс, занятый Activity.ЕСЛИ использование активности закончилось, тогда лучше уничтожить эту деятельность.

Во-вторых, это будет хорошо для схемы управления памятью.и если вы не вызываете команду destroy, то она будет автоматически вызываться при выходе из приложения

и, наконец, , если вы не хотите вызывать команду destroy при нажатии кнопки назад, тогда вы можете использовать метод переопределения onBackpressed()

0 голосов
/ 16 сентября 2011

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

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