Activity的生命周期

Activity的生命周期

Activity的生命周期

  Activity在其生命周期内,在运行、暂停、停止和不存在这四种状态切换。

  • 运行状态:一个新的Activity启动入栈后,它在屏幕最前端,处于栈的最顶端,此时它处于可见并可和用户交互的激活状态。
  • 暂停状态:当Activity被另一个透明或者Dialog样式的Activity覆盖时的状态。此时它依然与窗口管理器保持连接,系统继续维护其内部状态,它仍然可见,但它已经失去了焦点,故不可与用户交互。
  • 停止状态:当Activity不可见时,Activity处于Stopped状态。当Activity处于此状态时,一定要保存当前数据和当前的UI状态,否则一旦Activity退出或关闭时,当前的数据和UI状态就丢失了。
  • 不存在状态:Activity被杀掉以后或者被启动以前,处于Killed状态。这是Activity已从Activity堆栈中移除,需要重新启动才可以显示和使用。

  如下创建一个Activity,覆盖其生命周期方法,调用Logcat观察

 1 public class MainActivity extends AppCompatActivity {
 2     private static final String TAG="MyActivity";
 3     @Override
 4     protected void onCreate(Bundle savedInstanceState) {
 5         super.onCreate(savedInstanceState);
 6         setContentView(R.layout.activity_main);
 7     }
 8 
 9     //Activity创建或返回屏幕最前端
10     @Override
11     protected void onStart() {
12         super.onStart();
13         Log.d(TAG,"onStart() called");
14     }
15     //退出当前Activity或者跳转到新的Activity时
16     @Override
17     protected void onStop() {
18         super.onStop();
19         Log.d(TAG,"onStop() called");
20     }
21     //Activity被覆盖或者屏幕锁屏
22     @Override
23     protected void onPause() {
24         super.onPause();
25         Log.d(TAG,"onPause() called");
26     }
27     //同onStart()
28     @Override
29     protected void onRestart() {
30         super.onRestart();
31         Log.d(TAG,"onRestart() called");
32     }
33 
34     @Override
35     protected void onResume() {
36         super.onResume();
37         Log.d(TAG,"onResume() called");
38     }
39 }