2015-10-15 3 views
1

Там некоторые вещи, которых я не знаю о андроида жизненного цикла деятельности, не заводи меня на фрагментах !:отделка() и андроида деятельность Жизненный цикл

После того, как метод, как резюме() называется это будет продолжаться для выполнения до конца, если вызывается функция finish() или startActivity (новый Intent (..)).

public void onResume(){ 

     // do some stuff AAA 
     .... 

     startActivity(new Intent(..)); 

    // do some more stuff BBBB 

     // Do I get this far? 

     setResult(RESULT_CODE, intent); 


    finish(); 


    // How about here? Do I get this far? 

    // how do I make sure that everything started in this app up to now is finished off as well? ie that activities started up by this activity are also finished? 

} 

Btw, это похоже на вопрос о верхнем интервью. Будет ли onPause() по-прежнему вызываться после финиша()? как насчет onStop()?

Наконец, я хотел бы знать, как закончить() не только MainActivity, но и все такие действия, которые были запущены под приложением, то есть начаты с MainActivivity, таким образом возвращаясь к приложению, которое изначально называлось моим приложением.

+1

не могли бы вы попробовать его на себе? Есть какие-либо проблемы? Поместите журнал в оба метода и посмотрите результат. –

+0

Я хочу получить от теории этого. Я мог бы это сделать, но потом нужно протестировать на разных версиях Android и т. Д. Я хочу понять, почему? Также вы видели часть о завершении всех действий в рамках приложения? Это то, что я намереваюсь сделать, и я просто понял, что я действительно недостаточно знаю о жизненном цикле активности Android. Например, да, я мог бы проверить, включен ли onStop(), а onPause(), но на самом деле я хочу знать, почему, или я просто забуду это. – MuayThai

+0

Эти http://stackoverflow.com/questions/2590947/about-finish-in-android и http://stackoverflow.com/questions/4924071/calling-finish-on-and-android-activity-doesnt-actually- отделка может помочь вам. –

ответ

2

Да, будет вызываться код после вызова finish().

при вызове finish() следующей функцией, которая будет выполнена, является onPause().

Если вы хотите, чтобы закрыть все действия на задней стеке это сделать:

setResult(RESULT_CLOSE_ALL); 
finish(); 
+0

Хорошо, я помню, что есть что-то, что не вызвано, если вы в какой-то момент назовете финиш(). Не уверен, может быть, если это будет сделано в oncreate(). – MuayThai

+0

Хорошо, я также видел: vv Intent intent = new Intent (ExitConfirmationActivity.this, FirstActivity.class); intent.setFlags (Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity (намерение); – MuayThai

+0

Да, отлично. это запустит новое действие, очистив предыдущие. то вы можете вызывать только 'finish()' (без 'setResult (RESULT_CLOSE_ALL)'), потому что у вас есть только одно действие в фоновом стеке, если вы всегда используете флаг Intent.FLAG_ACTIVITY_CLEAR_TOP, чтобы активировать новую активность. – dsharew

Смежные вопросы