Android, запуск и выход из деятельности - PullRequest
2 голосов
/ 01 марта 2011

Я не очень понял обработку действий и стека. У меня есть 3 занятия, A - заставка, B - меню и C - другое занятие. Я запускаю заставку и закрываю ее через некоторое время при запуске меню. В коде я обрабатываю их все так:

startActivity(new Intent(this, ContactInfoMenu.class));
        finish();

Теперь, если я запускаю приложение и перехожу на A-B-C, когда я нажимаю «Назад» на экране C, я возвращаюсь в B-меню. Другой «Назад» выходит из приложения, как я хочу. НО .. если я пойду A-B-C-B-C - кнопка «Назад» на экране C выходит из всего приложения вместо того, чтобы вернуть меня на экран B?

Почему это? Это действительно так во всех моих «подэкранах», я могу ввести их только один раз, если я введу их второй раз, кнопка «Назад» выйдет из приложения. И я нигде не пытался поймать действие «Назад»? Разве я не должен всегда вызывать "finish ()", когда начинаю новое занятие?

Привет

Ответы [ 3 ]

5 голосов
/ 01 марта 2011

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

Есть набор флагов, которые вы можете передать при запуске действия, которые лучше определяют его поведение в стеке. К ним относятся:

  • FLAG_ACTIVITY_NO_HISTORY - ваша деятельность не останется в стеке после того, как другая деятельность ее покроет.
  • FLAG_ACTIVITY_CLEAR_TOP - хороший способ вызвать кучу действий, когда вам нужно «вернуться» к определенной деятельности.

Многие из этих флагов могут быть установлены в манифесте. Читая о них, вы получите лучшее представление о «Пути Android».

4 голосов
/ 01 марта 2011

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

1 голос
/ 03 сентября 2012

finish() чаще используется, когда вы вставляете некоторую информацию на одной странице, а затем переходите на другую страницу.В этом случае вам может понадобиться завершить свою первую деятельность.Но в случае, когда вам нужно перетасовать между представлениями, вы не должны использовать функцию finish (), потому что это приведет к тому, что для всего приложения будет finish.Попробуйте использовать собственную кнопку back в своих представлениях для переключения между действиями, когда вы можете перейти к любой другой активности вашего приложения или даже к Main Screen.

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