2015-09-28 3 views
1

В моей отладке я замечаю, что onPause/onStart/onStop/onDestroy вызывается сначала по фрагменту, а затем по его активности, тогда как onResume - наоборот - onResume активности вызывается первым перед его фрагментом.Жизненный цикл между активностью и фрагментом

Почему заказ отличается от onPause/onStart/onStop vs onResume между активностью и фрагментом?

09-28 15:26:40.869 30320-30320/testintent D/TestFragment﹕ onStart 
09-28 15:26:40.869 30320-30320/testintent D/TestActivity﹕ onStart 
09-28 15:26:40.869 30320-30320/testintent D/TestActivity﹕ onResume 
09-28 15:26:40.869 30320-30320/testintent D/TestFragment﹕ onResume 
09-28 15:26:40.869 30320-30320/testintent D/TestActivity﹕ onPostResume 
+0

вы уверены, что для OnStart? – sschrass

+0

@SatelliteSD Вход включен. – Boon

+0

Интересный вопрос. Вы видите множество диаграмм жизненных циклов активности и фрагментации, которые параллельны друг другу, но я не могу найти диаграмму, указывающую непосредственно из 'onResume()' операции 'на фрагмент 'onResume()' Fragment. В разделе «onResume()« Фрагмент »руководство разработчика говорит:« Обычно это связано с «Activity.onResume» жизненного цикла содержащейся активности », но в нем не указывается, как и не сказать, когда может быть исключение в общем случае , Из любопытства, являются ли ваши заявления Log.d' самыми первыми строками каждого метода? – pjd

ответ

0

только гадать при остановке, вы перестаете от внутреннего к внешним компонентам, в то время как, начиная отталкиваться от внешнего к внутреннему.

+0

hm wait. Я ошибся. Он не соответствует onStart. Но я убежден, что мои мысли не так уж далеки. – sschrass

0

Я также прошли по ссылкам ниже:

Вы можете обратиться Activity onStart() being called before Fragment's onActivityCreated()

http://developer.android.com/guide/components/fragments.html

enter image description here

Также ясно сказано в документ, как: Поток жизненного цикла фрагмента, так как он с указанием его активности хозяина, иллюстрируется цифрой.

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

Как только действие достигнет возобновленного состояния, вы можете свободно добавлять и удалять фрагменты в действие. Таким образом, только когда активность находится в состоянии возобновления, жизненный цикл фрагмента изменяется независимо.

Однако когда активность покидает возобновленное состояние, фрагмент снова выталкиваются через его жизненный цикл деятельностью.

Надеюсь, что это поможет.

+0

Пожалуйста, отметьте зеленый флажок, если это решит ваш вопрос .. – prat

+0

Если я не понимаю, ваш ответ, по-видимому, подразумевает, что журналы OP будут записывать 'onStart()' для Activity перед 'onStart()' для фрагмента. Что противоположно тому, что показано в вопросе. Аналогично с 'onPause',' onStop() 'и' onDestroy() '. Эта статья http://www.silverbaytech.com/2014/03/24/android-fragment-lifecycle-in-detail/, кажется, подтверждает мою интерпретацию. Таким образом, странность, похоже, не с 'onResume()', а с другими методами. Имеет ли это смысл? Мысли? – pjd

0

Почему заказ onResume() важен в вашей деятельности/фрагменте? В соответствии с принципами Google Фрагменты должны быть разработаны как подключаемые компоненты без зависимости от родительской активности.

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

идеал Фрагменты должны быть сконструированы таким образом, что вы будете иметь возможность подключить его к какой-либо деятельности без каких-либо модификаций ..

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