【Android开发】Activity的生命周期

4种状态

  • 运行状态:当前Activity位于前台,用户可见,可以获得焦点。
  • 暂停状态:其它Activity位于前台,该Activity依然可见,只是不能获得焦点。
  • 停止状态:该Activity不可见,失去焦点。
  • 销毁状态:该Activity结束,或Activity所在的进程被结束。

状态转化

  1. 加载Activity
  2. onCreate(Bundle savedStatus): 创建Activity时被回调。该方法只能被使用一次。
  3. onStart():启动Activity时被回调。
  4. onResume():Activity进入前台,已经可以开始交互。
  5. 运行状态
  6. onPause():其他Activity转入前台后回调该方法。
  7. 暂停状态
    1. 回到onResume(), 该Activity会回到前台
  8. onStop():该Activity会变为完全不可见。
  9. 停止状态
    1. onRestart(): 用户再次启动该Activity,使之进入前台,回到onStart()
    2. 更高优先级的应用需要内存,应用进程被终止,用户再次启动该Activity,回到onCreate()
  10. onDestroy() : 该Activity被系统结束活着销毁。
  11. 销毁状态

常见的状态转换

单个Activity的生命周期

  1. 正常启动 onCreate -> onStart -> onResume
    正常退出 onPause -> onStop -> onDestory
    再次启动 onCreate -> onStart -> onResume
  2. 已经处于前台的Activity, 点击主页按钮离开当前Activity, onPause -> onStop
    回到Activity:onRestart -> onStart -> onResume
  3. Activity不可操作 onPause -> onStop (如:息屏,打开了其他Activity), 应用被强行杀死
    再回到Activity,onCreate -> onStart -> onResume

多个Activity切换时

当启动另一个Activity时,当前Activity:onPause -> onStop
当点击返回按钮,使另一个Activity退出时,当前Activity: onRestart -> onStart -> onResume

对话框

  • 普通对话框不会影响生命周期
    //打开对话框
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("提示") //对话框标题
            .setMessage("Message") //对话框内容
            .setPositiveButton("OK", null) //参数1:返回文字;参数2:返回后做的事情
            .show(); //展示
  • 如果有个Activity伪装成对话框模式,那么当它启动时,之前的Activity:onPause
    “对话框”消失后,回调onResume再次回到前台

设置伪装成对话框的Acitvity

<activity android:name=".DialogActivity" android:theme="@style/Theme.AppCompat.Dialog">

启动Activity

   Intent it = new Intent(this, DialogActivity.class);
   startActivity(it);

猜你喜欢

转载自blog.csdn.net/weixin_42020386/article/details/112802242