其實(shí)對于Activity、Fragment的生命周期很多文章都有,但是都是在分別講它們的聲明周期,卻沒有結(jié)合起來看聲明周期方法。比如Activity的onCreate調(diào)用了后,附加上的Fragment的onCreate、onActivityCreated等方法什么時(shí)候執(zhí)行呢,貌似還是不是很清楚。于是就動手打印下日志看下就一目了然了。 1、正常的生命周期方法調(diào)用 02-08 11:26:06.982 18083-18083/com.xanthium.constraintlayoutsample E/MainActivity: —onCreate— 02-08 11:26:07.008 18083-18083/com.xanthium.constraintlayoutsample E/MainFragment: onAttach 02-08 11:26:07.008 18083-18083/com.xanthium.constraintlayoutsample E/MainActivity: —onAttachFragment— 02-08 11:26:07.008 18083-18083/com.xanthium.constraintlayoutsample E/MainFragment: onCreate 02-08 11:26:07.008 18083-18083/com.xanthium.constraintlayoutsample E/MainFragment: onCreateView 02-08 11:26:07.009 18083-18083/com.xanthium.constraintlayoutsample E/MainFragment: onViewCreated 02-08 11:26:07.009 18083-18083/com.xanthium.constraintlayoutsample E/MainFragment: onActivityCreated 02-08 11:26:07.010 18083-18083/com.xanthium.constraintlayoutsample E/MainFragment: onStart 02-08 11:26:07.010 18083-18083/com.xanthium.constraintlayoutsample E/MainActivity: —onStart— 02-08 11:26:07.010 18083-18083/com.xanthium.constraintlayoutsample E/MainActivity: —onResume— 02-08 11:26:07.010 18083-18083/com.xanthium.constraintlayoutsample E/MainFragment: onResume 02-08 11:26:07.011 18083-18083/com.xanthium.constraintlayoutsample E/MainActivity: —onPostResume— 02-08 11:26:17.550 18083-18083/com.xanthium.constraintlayoutsample E/MainFragment: onPause 02-08 11:26:17.550 18083-18083/com.xanthium.constraintlayoutsample E/MainActivity: —onPause— 02-08 11:26:18.085 18083-18083/com.xanthium.constraintlayoutsample E/MainFragment: onStop 02-08 11:26:18.085 18083-18083/com.xanthium.constraintlayoutsample E/MainActivity: —onStop— 02-08 11:26:18.086 18083-18083/com.xanthium.constraintlayoutsample E/MainFragment: onDestroyView 02-08 11:26:18.086 18083-18083/com.xanthium.constraintlayoutsample E/MainFragment: onDestroy 02-08 11:26:18.086 18083-18083/com.xanthium.constraintlayoutsample E/MainFragment: onDetach 02-08 11:26:18.087 18083-18083/com.xanthium.constraintlayoutsample E/MainActivity: —onDestroy—
2、切換到其它界面的生命周期方法 02-08 11:32:24.268 18083-18083/com.xanthium.constraintlayoutsample E/MainActivity: —onCreate— 02-08 11:32:24.283 18083-18083/com.xanthium.constraintlayoutsample E/MainFragment: onAttach 02-08 11:32:24.283 18083-18083/com.xanthium.constraintlayoutsample E/MainActivity: —onAttachFragment— 02-08 11:32:24.283 18083-18083/com.xanthium.constraintlayoutsample E/MainFragment: onCreate 02-08 11:32:24.283 18083-18083/com.xanthium.constraintlayoutsample E/MainFragment: onCreateView 02-08 11:32:24.285 18083-18083/com.xanthium.constraintlayoutsample E/MainFragment: onViewCreated 02-08 11:32:24.285 18083-18083/com.xanthium.constraintlayoutsample E/MainFragment: onActivityCreated 02-08 11:32:24.285 18083-18083/com.xanthium.constraintlayoutsample E/MainFragment: onStart 02-08 11:32:24.285 18083-18083/com.xanthium.constraintlayoutsample E/MainActivity: —onStart— 02-08 11:32:24.285 18083-18083/com.xanthium.constraintlayoutsample E/MainActivity: —onResume— 02-08 11:32:24.286 18083-18083/com.xanthium.constraintlayoutsample E/MainFragment: onResume 02-08 11:32:24.286 18083-18083/com.xanthium.constraintlayoutsample E/MainActivity: —onPostResume— 02-08 11:32:26.801 18083-18083/com.xanthium.constraintlayoutsample E/MainFragment: onPause 02-08 11:32:26.801 18083-18083/com.xanthium.constraintlayoutsample E/MainActivity: —onPause— 02-08 11:32:27.248 18083-18083/com.xanthium.constraintlayoutsample E/MainFragment: onStop 02-08 11:32:27.248 18083-18083/com.xanthium.constraintlayoutsample E/MainActivity: —onStop— 區(qū)別在這里,Activity回來的時(shí)候之星onRestart方法了 02-08 11:32:33.794 18083-18083/com.xanthium.constraintlayoutsample E/MainActivity: —onRestart— 02-08 11:32:33.795 18083-18083/com.xanthium.constraintlayoutsample E/MainFragment: onStart 02-08 11:32:33.795 18083-18083/com.xanthium.constraintlayoutsample E/MainActivity: —onStart— 02-08 11:32:33.795 18083-18083/com.xanthium.constraintlayoutsample E/MainActivity: —onResume— 02-08 11:32:33.795 18083-18083/com.xanthium.constraintlayoutsample E/MainFragment: onResume 02-08 11:32:33.795 18083-18083/com.xanthium.constraintlayoutsample E/MainActivity: —onPostResume— 02-08 11:33:01.046 18083-18083/com.xanthium.constraintlayoutsample E/MainFragment: onPause 02-08 11:33:01.046 18083-18083/com.xanthium.constraintlayoutsample E/MainActivity: —onPause— 02-08 11:33:01.539 18083-18083/com.xanthium.constraintlayoutsample E/MainFragment: onStop 02-08 11:33:01.540 18083-18083/com.xanthium.constraintlayoutsample E/MainActivity: —onStop— 02-08 11:33:01.540 18083-18083/com.xanthium.constraintlayoutsample E/MainFragment: onDestroyView 02-08 11:33:01.541 18083-18083/com.xanthium.constraintlayoutsample E/MainFragment: onDestroy 02-08 11:33:01.541 18083-18083/com.xanthium.constraintlayoutsample E/MainFragment: onDetach 02-08 11:33:01.541 18083-18083/com.xanthium.constraintlayoutsample E/MainActivity: —onDestroy—
不過需要注意的是,如果使用不同手機(jī)的最近列表直接移除應(yīng)用的時(shí)候,你會發(fā)現(xiàn)Activity、Fragment的onDestroyView、onDestroy、onDetach等方法是不執(zhí)行的,感覺這樣做的就感覺一個(gè)完整的生命周期沒有被執(zhí)行啊,不過想想也許系統(tǒng)絕對既然都?xì)⑺懒司蜎]必要去執(zhí)行吧。當(dāng)然這個(gè)也看手機(jī)系統(tǒng)吧。像我的樂視手機(jī)就是不執(zhí)行。
另外,以前總以為Fragment的getContext和getActivity是在onActivityCreated 方法執(zhí)行之后才有值的,今天才知道其實(shí)在onCreate的時(shí)候就有了。
新聞熱點(diǎn)
疑難解答