4种状态
- 运行状态:当前Activity位于前台,用户可见,可以获得焦点。
- 暂停状态:其它Activity位于前台,该Activity依然可见,只是不能获得焦点。
- 停止状态:该Activity不可见,失去焦点。
- 销毁状态:该Activity结束,或Activity所在的进程被结束。
状态转化
- 加载Activity
- onCreate(Bundle savedStatus): 创建Activity时被回调。该方法只能被使用一次。
- onStart():启动Activity时被回调。
- onResume():Activity进入前台,已经可以开始交互。
- 运行状态
- onPause():其他Activity转入前台后回调该方法。
- 暂停状态
- 回到onResume(), 该Activity会回到前台
- onStop():该Activity会变为完全不可见。
- 停止状态
- onRestart(): 用户再次启动该Activity,使之进入前台,回到onStart()
- 更高优先级的应用需要内存,应用进程被终止,用户再次启动该Activity,回到onCreate()
- onDestroy() : 该Activity被系统结束活着销毁。
- 销毁状态
常见的状态转换
单个Activity的生命周期
- 正常启动 onCreate -> onStart -> onResume
正常退出 onPause -> onStop -> onDestory
再次启动 onCreate -> onStart -> onResume - 已经处于前台的Activity, 点击主页按钮离开当前Activity, onPause -> onStop
回到Activity:onRestart -> onStart -> onResume - 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);