package liudeli.activity.fragment; import android.app.Activity; import android.os.Bundle; import android.util.Log; import liudeli.activity.R; public class MyTestFragmentActivity3 extends Activity { private final String TAG = MyFragment3.class.getSimpleName(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_test_fragment3); Log.i(TAG, "Activity onCreate"); } @Override protected void onStart() { super.onStart(); Log.i(TAG, "Activity onStart"); } @Override protected void onResume() { super.onResume(); Log.i(TAG, "Activity onResume"); } /***** 當一個Activity再也不被使用時,它會經歷一系列反向回調:*****/ @Override protected void onPause() { super.onPause(); Log.i(TAG, "Activity onPause"); } @Override protected void onStop() { super.onStop(); Log.i(TAG, "Activity onStop"); } @Override protected void onDestroy() { super.onDestroy(); Log.i(TAG, "Activity onDestroy"); } }
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <fragment android:id="@+id/fragment" class="liudeli.activity.fragment.MyFragment3" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>
package liudeli.activity.fragment; import android.app.Activity; import android.app.Fragment; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; /** * Fragment的生命週期 */ public class MyFragment3 extends Fragment { private final String TAG = MyFragment3.class.getSimpleName(); /** * 當Fragment附加到Activity之上時調用此方法 * @param activity */ @Override public void onAttach(Activity activity) { super.onAttach(activity); Log.d(TAG, ">>>>>>>>>>>>>>> MyFragment onAttach()"); } /** * 當Fragment初始化時調用此方法 */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.d(TAG, ">>>>>>>>>>>>>>> MyFragment onCreate()"); } /** * 當Fragment建立View(1.佈局加載加載Layout 2.new View)並返回 * @param inflater 佈局加載器 用來加載佈局 * @param container * @param savedInstanceState 保存臨時數據,和Activity的onCreate->savedInstanceState 同樣 * @return */ @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { super.onCreateView(inflater, container, savedInstanceState); Log.d(TAG, ">>>>>>>>>>>>>>> MyFragment onCreateView()"); TextView tv = new TextView(getActivity()); // 在Fragment不能使用this /** * 注意:⚠️ 此方法必需要返回View,不然會報錯 */ return tv; } /** * Activity已建立完成 * @param savedInstanceState 保存臨時數據,和Activity的onCreate->savedInstanceState 同樣 */ @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); Log.d(TAG, ">>>>>>>>>>>>>>> MyFragment onActivityCreated()"); } /** * 當Fragment啓動 */ @Override public void onStart() { super.onStart(); Log.d(TAG, ">>>>>>>>>>>>>>> MyFragment onStart()"); } /** * 當Fragment活躍在前臺顯示 */ @Override public void onResume() { super.onResume(); Log.d(TAG, ">>>>>>>>>>>>>>> MyFragment onResume()"); } /***** 當一個片斷再也不被使用時,它會經歷一系列反向回調:*****/ /** * 當Fragment再也不前臺 */ @Override public void onPause() { super.onPause(); Log.d(TAG, ">>>>>>>>>>>>>>> MyFragment onPause()"); } /** * 當Fragment再也不前臺 不徹底顯示 會 onStop */ @Override public void onStop() { super.onStop(); Log.d(TAG, ">>>>>>>>>>>>>>> MyFragment onStop()"); } /** * 當Fragment銷燬本身的控件 */ @Override public void onDestroyView() { super.onDestroyView(); Log.d(TAG, ">>>>>>>>>>>>>>> MyFragment onDestroyView()"); } /** * 當Fragment銷燬本身 */ @Override public void onDestroy() { super.onDestroy(); Log.d(TAG, ">>>>>>>>>>>>>>> MyFragment onDestroy()"); } /** * 當Fragment 離開 Activity (不附加在Activity之上了 離開了) */ @Override public void onDetach() { super.onDetach(); Log.d(TAG, ">>>>>>>>>>>>>>> MyFragment onDetach()"); } }
1.Fragment附加到Activity之上 ,執行onAttach方法html
2.Fragment建立啦,執行onCreate方法android
3.Fragment的View建立啦,執行onCreateView方法web
4.Activity的onCreate執行了app
5.Fragment收到Activity建立好啦,執行onActivityCreated方法ide
6.Activity的onStart執行了佈局
7.Fragment啓動啦,執行onStart方法this
8.Activity的onResume執行了spa
9.Fragment顯示到前臺啦,執行onResume方法3d
2.Activity的onPause執行了code
3.Fragment中止了,執行onStop方法
4.Activity的onStop執行了
5.Fragment銷燬本身的控件,執行onDestroyView方法
6.Fragment銷燬本身,執行onDestroy方法
7.Fragment離開Activity,再也不附近啦,執行onDetach方法
8.Activity銷燬了,執行onDestroy方法
12-26 02:07:35.066 5493-5493/? D/MyFragment3: >>>>>>>>>>>>>>> MyFragment onAttach()
12-26 02:07:35.066 5493-5493/? D/MyFragment3: >>>>>>>>>>>>>>> MyFragment onCreate()
12-26 02:07:35.066 5493-5493/? D/MyFragment3: >>>>>>>>>>>>>>> MyFragment onCreateView()
12-26 02:07:35.068 5493-5493/? I/MyFragment3: onCreate
12-26 02:07:35.068 5493-5493/? D/MyFragment3: >>>>>>>>>>>>>>> MyFragment onActivityCreated()
12-26 02:07:35.069 5493-5493/? I/MyFragment3: onStart
12-26 02:07:35.069 5493-5493/? D/MyFragment3: >>>>>>>>>>>>>>> MyFragment onStart()
12-26 02:07:35.069 5493-5493/? I/MyFragment3: onResume
12-26 02:07:35.069 5493-5493/? D/MyFragment3: >>>>>>>>>>>>>>> MyFragment onResume()
12-26 02:14:17.461 5792-5792/liudeli.activity D/MyFragment3: >>>>>>>>>>>>>>> MyFragment onPause()
12-26 02:14:17.461 5792-5792/liudeli.activity I/MyFragment3: Activity onPause
12-26 02:14:18.029 5792-5792/liudeli.activity D/MyFragment3: >>>>>>>>>>>>>>> MyFragment onStop()
12-26 02:14:18.029 5792-5792/liudeli.activity I/MyFragment3: Activity onStop
12-26 02:14:18.029 5792-5792/liudeli.activity D/MyFragment3: >>>>>>>>>>>>>>> MyFragment onDestroyView()
12-26 02:14:18.029 5792-5792/liudeli.activity D/MyFragment3: >>>>>>>>>>>>>>> MyFragment onDestroy()
12-26 02:14:18.029 5792-5792/liudeli.activity D/MyFragment3: >>>>>>>>>>>>>>> MyFragment onDetach()
12-26 02:14:18.029 5792-5792/liudeli.activity I/MyFragment3: Activity onDestroy