Activity生命周期详解
activity作为Android开发中一个最重要的组件之一,所以要对它有详细的了解
1.当activity第一次创建时执行以下方法
1 /** 2 * 第一次创建activity调用 3 * 4 * @param savedInstanceState 5 */ 6 @Override 7 protected void onCreate(Bundle savedInstanceState) { 8 super.onCreate(savedInstanceState); 9 setContentView(R.layout.activity_main); 10 Log.i(TAG, "--------------->onCreate"); 11 } 12 13 /** 14 * activity变为可视状态调用 15 */ 16 @Override 17 protected void onStart() { 18 super.onStart(); 19 Log.i(TAG, "--------------->onStart"); 20 } 21 22 /** 23 * activity的界面就可以和用户进行交互时调用 24 */ 25 @Override 26 protected void onResume() { 27 super.onResume(); 28 Log.i(TAG, "--------------->onResume"); 29 }
1 MainActivity: --------------->onCreate 2 MainActivity: --------------->onStart 3 MainActivity: --------------->onResume
2. 当前activity启动另一个activity时执行的方法
1 /** 2 * 用户不可以和界面进行交互时调用 3 */ 4 @Override 5 protected void onPause() { 6 super.onPause(); 7 Log.i(TAG, "--------------->onPause"); 8 } 9 /** 10 * activity处于不可见状态调用 11 */ 12 @Override 13 protected void onStop() { 14 super.onStop(); 15 Log.i(TAG, "--------------->onStop"); 16 }
1 MainActivity: --------------->onPause 2 MainActivity: --------------->onStop
3.从另一个activity返回到当前activity执行的方法
1 /** 2 * 当前activity没有被销毁重新启动时调用 3 */ 4 @Override 5 protected void onRestart() { 6 super.onRestart(); 7 Log.i(TAG, "--------------->onRestart"); 8 } 9 /** 10 * activity变为可视状态调用 11 */ 12 @Override 13 protected void onStart() { 14 super.onStart(); 15 Log.i(TAG, "--------------->onStart"); 16 } 17 /** 18 * activity的界面就可以和用户进行交互时调用 19 */ 20 @Override 21 protected void onResume() { 22 super.onResume(); 23 Log.i(TAG, "--------------->onResume"); 24 }
1 MainActivity: --------------->onRestart 2 MainActivity: --------------->onStart 3 MainActivity: --------------->onResume
4.当前activity点击home键后执行的方法
1 /** 2 * 用户不可以和界面进行交互时调用 3 */ 4 @Override 5 protected void onPause() { 6 super.onPause(); 7 Log.i(TAG, "--------------->onPause"); 8 } 9 /** 10 * activity处于不可见状态调用 11 */ 12 @Override 13 protected void onStop() { 14 super.onStop(); 15 Log.i(TAG, "--------------->onStop"); 16 }
1 MainActivity: --------------->onPause 2 MainActivity: --------------->onStop
5.从后台运行中进入activity执行的方法与 3 一样
6.点击返回键时执行的方法
1 /** 2 * 用户不可以和界面进行交互时调用 3 */ 4 @Override 5 protected void onPause() { 6 super.onPause(); 7 Log.i(TAG, "--------------->onPause"); 8 } 9 /** 10 * activity处于不可见状态调用 11 */ 12 @Override 13 protected void onStop() { 14 super.onStop(); 15 Log.i(TAG, "--------------->onStop"); 16 } 17 /** 18 * 当activity销毁时调用 19 */ 20 @Override 21 protected void onDestroy() { 22 super.onDestroy(); 23 Log.i(TAG, "--------------->onDestroy"); 24 }
1 MainActivity: --------------->onPause 2 MainActivity: --------------->onStop 3 MainActivity: --------------->onDestroy
7.当切换横竖屏时系统会销毁当前activity重新创建一个activity执行方法的先后顺序如下:
1 MainActivity: --------------->onPause 2 MainActivity: --------------->onStop 3 MainActivity: --------------->onDestroy 4 5 6 MainActivity: --------------->onCreate 7 MainActivity: --------------->onStart 8 MainActivity: --------------->onResume