Поведение на бутона за връщане назад на Android

Да кажем, че имаме празна дейност по подразбиране с поведение по подразбиране, стартирана с флагове за намерение по подразбиране. Потребителят натиска бутона за връщане назад на устройството. Дейността изчезва... но как всъщност?

  • Натискането на бутона за връщане назад действа ли по същия начин като finish()?
  • Дейността унищожава ли се незабавно (извиква се onDestroy)?
  • Гарантирано ли е унищожаване на дейността, но не веднага?
  • Има ли някакъв шанс дейността да не бъде унищожена и този екземпляр да бъде използван повторно, когато тази дейност бъде стартирана в бъдеще? (така че се извикват само onPause и onStop -> onStart и onResume?)

Търся надежден отговор, така че, моля, не отговаряйте, ако не сте абсолютно сигурни какво се случва тук.


person Sebastian Nowak    schedule 23.07.2012    source източник
comment
това може да представлява интерес за вас: developer.android.com/training/basics /активност-жизнен цикъл/   -  person Dennis    schedule 23.07.2012
comment
можете ли да публикувате вашия код, за да можем да преценим по-добре   -  person Rahul Baradia    schedule 23.07.2012
comment
Има ли нещо в default, empty activity with default behaviour, launched with default intent flags, което не можете да възпроизведете? Просто създайте проект по подразбиране във вашата IDE.   -  person Sebastian Nowak    schedule 23.07.2012
comment
@Chips_100: Линкът, който предоставихте, няма отговор на този въпрос.   -  person Sebastian Nowak    schedule 23.07.2012
comment
Прочетете тази подглава: developer.android.com/training/basics/activity- lifecycle/ [...]your activity is destroyed due to normal app behavior, such as when the user presses the Back button or your activity signals its own destruction by calling finish().[...] Все пак бих препоръчал да прочетете цялата глава.   -  person Dennis    schedule 23.07.2012
comment
Добре благодаря. Така дейността винаги се унищожава и няма да се използва повторно. Бихте ли го публикували като отговор, за да мога да го приема?   -  person Sebastian Nowak    schedule 23.07.2012


Отговори (5)


http://developer.android.com/training/basics/activity-lifecycle/recreating.html

Това е подглава от официалната документация на Android, която отговаря на вашия въпрос. Това е подглава на тема Managing the Activity Lifecycle, която може да бъде прочетена тук: http://developer.android.com/training/basics/activity-lifecycle/index.html

Определено си струва да прочетете цялата глава, за да научите подробностите за поведението на Android Activity. Но подглавата ( първа връзка ) е съответната част на този въпрос.

person Dennis    schedule 23.07.2012
comment
Това е отговор само с връзка, можете ли да цитирате съответните части от документа? Имате чувството, че искате да правите добро, като принуждавате хората да четат тези статии, опитайте метода на Сократ и използвайте маркауна за спойлер. - person TWiStErRob; 02.03.2016

трябва да разгледате това опитайте това

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

person Vipin Sahu    schedule 23.07.2012

Когато натиснете назад (ако не бъде прихванато от нещо като клавиатура, фрагмент, активност и т.н.), операционната система (вероятно чрез ActivityManager) ще се опита да покаже на потребителя предишната активност в текущата ви задача (отново, игнорирайки задния стек на фрагментите) .

Ако няма такава дейност, задачата ще бъде прекратена и ще отидете на предишната задача - началния екран в повечето случаи или някое друго приложение, което може да е стартирало вашето приложение.

Скоро ще ви се обади onDestroy (зависи колко време е необходимо за започване на следващата дейност, но на добър телефон трябва да е под 100-200 ms).

Екземплярът ви на активност няма да се използва повторно след onFinish. Това се случва преди дейността да бъде унищожена, така че ако имате нужда от друга дейност от същия тип, операционната система ще създаде друг екземпляр.

person Pedro Loureiro    schedule 23.07.2012
comment
Не за това питах. Въпросът е достатъчно точен. - person Sebastian Nowak; 23.07.2012
comment
Дейността изчезва... но как всъщност? - Мисля, че отговорих на въпроса ви - person Pedro Loureiro; 23.07.2012
comment
И това е проблемът при вас. Просто четеш първото изречение и отговаряш без да се замисляш. Ако прочетете останалото, ще забележите, че съм обяснил за какво точно питам. - person Sebastian Nowak; 23.07.2012

Когато потребителят натисне клавиша НАЗАД, текущата дейност се изважда от горната част на стека (активността гарантирано ще бъде унищожена, но не веднага, може да е, когато системните ресурси са ниски) и предишната дейност се възобновява (предишното състояние на потребителския му интерфейс е възстановен).

Кои действия действат бутонът за връщане назад/клавишът за връщане назад Android тригер?

person Archie.bpgc    schedule 23.07.2012
comment
Моля, вижте този въпрос: stackoverflow.com/questions/4778754 / Ако винаги се унищожава, тогава защо налагат finish() на бутона за връщане назад? - person Sebastian Nowak; 23.07.2012
comment
Вижте също приетия отговор тук: stackoverflow. com/questions/3249332/ - person Sebastian Nowak; 23.07.2012

Определено onDestroy() се нарича .....Има няколко сценария, при които активността ви се унищожава поради нормалното поведение на приложението, като например когато потребителят натисне бутона Назад или дейността ви сигнализира за собственото си унищожаване чрез извикване на finish().

person manuelesuzzani    schedule 14.01.2013