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 }