2017-01-07 9 views
0

Я знаю, что когда действие сначала создается, его метод onCreate() вступает в игру.Какой метод вызывается после того, как намерение начинает действие?

Предположим, что существует основное действие, которое запускает другое действие (secondActivity.java) через намерение, а затем второе действие снова начинает основное действие посредством намерения. Мой вопрос заключается в том, вызван ли метод onRestart() основным действием после получения намерения или вызван метод onCreate()?

Заранее благодарен!

+2

Почему бы просто не попробовать? просто переопределите методы, вызовите super .... и журнал имя метода –

+0

Я сделал и метод onCreate вызывается, и я был смущен, как и не должно быть, потому что onCreate вызывается только один раз на протяжении всего жизненного цикла. –

+0

Но ответ CommonsWare дал понять все. –

ответ

3

Мой вопрос заключается в том, вызван ли метод onRestart() основным видом деятельности после получения намерения или вызван метод onCreate()?

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

По умолчанию, один будет. В этом случае новый экземпляр основного действия будет вызываться с помощью onCreate(). оригинал экземпляр основной деятельности оставлен в покое.

Однако, используя Intent флаги (например, FLAG_ACTIVITY_REORDER_TO_FRONT) или настройки манифеста, вы можете организовать первоначальный экземпляр основного действия, возвращенного на передний план. В этом случае исходный экземпляр будет вызываться с onNewIntent() (для предоставления вам Intent, используемого с startActivity(), который перенес операцию обратно на передний план). Его также следует называть onRestart(), onStart() и onResume() в качестве части возврата на передний план.

+0

Спасибо! Итак, лучше ли я получить исходный экземпляр main на переднем плане или это нормально, если я просто позволю создать другой экземпляр main? –

+3

@RohanBhatia: Это зависит от вас. Повторное использование активности сохраняет память. Но в некоторой степени это зависит от того, как вы настраиваете навигацию. Если вы создаете новый экземпляр, ваша последовательность действий будет M -> S -> M2 (M = main, S = second, M2 = второй экземпляр main). И поэтому, когда пользователь нажимает BACK из M2, они переходят к S, и когда они нажимают BACK с S, они идут к M.Если вы переупорядочиваете стек и повторно используете M, когда пользователь нажимает BACK из M, они переходят на S, а когда они нажимают BACK с S, они выходят из приложения. – CommonsWare

1

Вот изображение из Android жизненного цикла от документации:

Android life cycle

При запуске второй активности onPause() и т.д. будет называться на первой деятельности, то onCreate() и так далее будет называться по второму действию. Как вы можете видеть на диаграмме выше, когда вы нажимаете назад onRestart(), следует вызывать первое действие.

+0

Я видел это изображение. Это не помогает. –

+0

Я добавил еще несколько подробностей. – rekire

0

Если вы начинаете новое намерение, вызывается метод onCreate().

+0

Вы уверены, что сайт разработчика Android говорит: «Весь жизненный цикл активности происходит между первым вызовом onCreate (Bundle) до одного окончательного вызова onDestroy(). –

+0

http://stackoverflow.com/a/41522480/3939085 i reffer to the awnser – Malik