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
原文地址:https://www.cnblogs.com/hejiaoshou/p/7467442.html