2014-01-23 3 views
0

Мне было интересно некоторое время узнать точную роль функции onStart() в жизненном цикле Android. Большинство ресурсов в сети просто говорят - оно вызывается непосредственно перед тем, как ваша активность станет видимой на экране.Что делает onStart() действительно? - Android

Но приложения, которые я сделал до сих пор, я никогда не использовал onStart(). Я выполняю всю свою инициализацию в onCreate().

Все остальные состояния в жизненном цикле android имеют какое-то значение, но роль onStart() не очень ясна.

Есть ли какие-либо конкретные вещи, которые необходимо сделать в onStart()? Является onStart() действительно необходимым в жизненном цикле, поскольку вся инициализация может быть выполнена в onCreate(), и она также вызывается до того, как активность станет видимой.

Может ли кто-нибудь помочь мне разобраться в onStart() четко. Заранее спасибо :)

+0

Я уже изучил этот пост, но я до сих пор не понимаю, что такое функция onStart(), поэтому мне пришлось снова задать вопрос, чтобы получить лучшее представление о onStart() – ik024

ответ

4

onStart() вызывается, когда активность возобновляется с остановленного состояния. Например, если у вас есть активность A и начинается с нее активность B, то действие A будет приостановлено (onPause()), а затем остановлено (onStop()) и перенесено в стек. После этого, если вы нажмете «Назад» в свою активность B, B будет приостановлен (onPause()), остановлен (onStop()) и уничтожен (onDestroy()), и действие A будет восстановлено из предыдущего стека, начато (onStart()) и возобновлено (onResume()). Как вы можете видеть, система не будет звонить onCreate() для A снова.

Как пользоваться onStart()? Например, вы должны отменить регистрацию слушателей для GPS, датчиков и т. Д. В onStop() и зарегистрировать снова в onStart(). Если вы зарегистрируете его в onCreate() и отмените регистрацию в onDestroy(), тогда служба GPS будет работать всегда, и она будет разряжать батарею.

+0

Я думаю, что это становится ясным. Таким образом, основная роль onStart() заключается в том, когда действие вызывается после приостановки. Если вызывается onCreate(), то все инициализации должны быть выполнены снова, используя onStart(), мы можем инициализировать те вещи, которые были неинициализированы в onstop(). Таким образом, в основном onStart() может использоваться для инициализации тех вещей, которые мы будем неинициализировать в onStop(). Спасибо, его ясно сейчас :) – ik024

+0

@ user3064175 Не совсем. Прочтите жизненный цикл снова, осторожно. Существуют сценарии, в которых следующий обратный вызов после 'onPause()' является 'onCreate()'. – Simon

+0

@ Симон, да, вы правы.Изменение ориентации (и повторное создание активности) может вызвать этот сценарий, например – Dimmerg

0

, что я лично делать, если я хочу пользователя OnStart, я присвоит мои слушатели (OnclickListener, ... и т.д.) в методе OnStart.

Я думаю, что это действительно бесполезно, поскольку вы можете делать все, что захотите, в onCreate.

Надежда, что помогает

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