天天看點

Activity和Fragment生命周期

Activity和Fragment生命周期的關系如下面的。主要是通過log了解他們的生命周期。我們通常很多事情都是直接在onCreate裡面做了。但是其實有的事情是應該在其他的

步驟完成。目前我使用到的是更新UI及資料的操作應該在onStart裡面做。因為跳到其他界面進行編輯後傳回原來的界面時

往往會對UI進行更新,這時候需要在onStart裡面跟新一下。下面對照這個圖。寫了一個簡單的程式。有三個Fragment :FirstFragment,SecondFragment,ThirdFragment,分别依附這三個activity:FirstActivty,SecondActivity,ThirdActivity。其中FirstFragment兩個按鈕分别可以跳到SecondActivity和ThirdActivity。ThirdActivity是一個對話框(在AndroidManifest.xml裡面可以設定)。

Activity和Fragment生命周期

啟動FirstActivity  --> 啟動SecondActivity ---> 傳回FirstActivity ---> 退出FirstActivty 的log

//啟動FirstActvity

08-04 16:24:48.816: I/DBG(966): FirstActivity-> onCreate

08-04 16:24:48.817: I/DBG(966): FirstFragment-> onAttach

08-04 16:24:48.818: I/DBG(966): FirstFragment-> onCreate

08-04 16:24:48.818: I/DBG(966): FirstFragment-> onCreateView

08-04 16:24:48.823: I/DBG(966): FirstFragment-> onActivityCreated

08-04 16:24:48.824: I/DBG(966): FirstFragment-> onStart

08-04 16:24:48.824: I/DBG(966): FirstActivity-> onStart

08-04 16:24:48.825: I/DBG(966): FirstActivity-> onResume

08-04 16:24:48.825: I/DBG(966): FirstFragment-> onResume

//按鍵啟動了SecondActvity

08-04 16:24:49.759: I/DBG(966): FirstFragment-> onPause

08-04 16:24:49.759: I/DBG(966): FirstActivity-> onPause

08-04 16:24:49.794: I/DBG(966): SecondActivity-> onCreate

08-04 16:24:49.795: I/DBG(966): SecondFragment-> onAttach

08-04 16:24:49.795: I/DBG(966): SecondFragment-> onCreate

08-04 16:24:49.796: I/DBG(966): SecondFragment-> onCreateView

08-04 16:24:49.799: I/DBG(966): SecondFragment-> onActivityCreated

08-04 16:24:49.799: I/DBG(966): SecondFragment-> onStart

08-04 16:24:49.799: I/DBG(966): SecondActivity-> onStart

08-04 16:24:49.800: I/DBG(966): SecondActivity-> onResume

08-04 16:24:49.801: I/DBG(966): SecondFragment-> onResume

08-04 16:24:50.086: I/DBG(966): FirstFragment-> onStop

08-04 16:24:50.087: I/DBG(966): FirstActivity-> onStop

//按取消鍵傳回到FirstActvity,是以一些重新整理顯示的動作應該在onstart裡面執行

08-04 16:24:51.208: I/DBG(966): SecondFragment-> onPause

08-04 16:24:51.209: I/DBG(966): SecondActivity-> onPause

08-04 16:24:51.214: I/DBG(966): FirstActivity-> onRestart

08-04 16:24:51.215: I/DBG(966): FirstFragment-> onStart

08-04 16:24:51.215: I/DBG(966): FirstActivity-> onStart

08-04 16:24:51.216: I/DBG(966): FirstActivity-> onResume

08-04 16:24:51.216: I/DBG(966): FirstFragment-> onResume

08-04 16:24:51.478: I/DBG(966): SecondFragment-> onStop

08-04 16:24:51.479: I/DBG(966): SecondActivity-> onStop

08-04 16:24:51.480: I/DBG(966): SecondFragment-> onDestroyView

08-04 16:24:51.482: I/DBG(966): SecondFragment-> onDestroy

08-04 16:24:51.483: I/DBG(966): SecondFragment-> onDetach

08-04 16:24:51.484: I/DBG(966): SecondActivity-> onDestroy

//按取消鍵退出FirstActvity

08-04 16:24:52.836: I/DBG(966): FirstFragment-> onPause

08-04 16:24:52.837: I/DBG(966): FirstActivity-> onPause

08-04 16:24:53.124: I/DBG(966): FirstFragment-> onStop

08-04 16:24:53.127: I/DBG(966): FirstActivity-> onStop

08-04 16:24:53.127: I/DBG(966): FirstFragment-> onDestroyView

08-04 16:24:53.128: I/DBG(966): FirstFragment-> onDestroy

08-04 16:24:53.129: I/DBG(966): FirstFragment-> onDetach

08-04 16:24:53.129: I/DBG(966): FirstActivity-> onDestroy

啟動FirstActivity  --> 啟動ThirdActivity ---> 傳回FirstActivity ---> 退出FirstActivty 的log

代碼點選這裡下載下傳: