Activity生命周期和四种启动模式
前言:
activity是用户和应用程序交互的窗口,一个activity相当于我们实际中的一个网页,当打开一个屏幕时,之前的那一个屏幕会被置为暂停状态,并且压入历史堆栈中,用户可以通过操作返回到以前打开过的屏幕。activity的生命周期:即“产生、运行、销毁”,但是这其中会调用许多方法onCreate(创建)
、onStart(**) 、onResume(恢复) 、onPause(暂停) 、onStop(停止) 、onDestroy(销毁) 、onRestart(重启)。
Activity生命周期简介:
Activity生命周期(掌握)
void onCreate()
Activity已经被创建完毕
void onStart()
Activity已经显示在屏幕,但没有得到焦点
void onResume()
Activity得到焦点,可以与用户交互
void onPause()
Activity失去焦点,无法再与用户交互,但依然可见
void onStop()
Activity不可见,进入后台
void onDestroy()
Activity被销毁
void onRestart()
Activity从不可见变成可见时会执行此方法
void onCreate()
Activity已经被创建完毕
void onStart()
Activity已经显示在屏幕,但没有得到焦点
void onResume()
Activity得到焦点,可以与用户交互
void onPause()
Activity失去焦点,无法再与用户交互,但依然可见
void onStop()
Activity不可见,进入后台
void onDestroy()
Activity被销毁
void onRestart()
Activity从不可见变成可见时会执行此方法
完整生命周期
onCreate-->onStart-->onResume-->onPause-->onStop-->onDestory
可视生命周期
onStart-->onResume-->onPause
onCreate-->onStart-->onResume-->onPause-->onStop-->onDestory
可视生命周期
onStart-->onResume-->onPause
一、当执行程序时,会调用onCreate-->onStart-->onResume
二、当进入另一个Activity时,当前主Activity执行onPause-->onStop
三、当摧毁第二个Activity时,主Activity进入onRestart()-->onStart-->onResume
四、摧毁主Activity时执行;onPause-->onStop-->onDestory
Activity的四种启动模式(掌握)
每个应用会有一个Activity任务栈,存放已启动的Activity
Activity的启动模式,修改任务栈的排列情况
standard 标准启动模式
singleTop 单一顶部模式
* 如果任务栈的栈顶存在这个要开启的activity,不会重新的创建activity,而是复用已经存在的activity。保证栈顶如果存在,不会重复创建。
singeTask 单一任务栈,在当前任务栈里面只能有一个实例存在
* 当开启activity的时候,就去检查在任务栈里面是否有实例已经存在,如果有实例存在就复用这个已经存在的activity,并且把这个activity上面的所有的别的activity都清空,复用这个已经存在的activity。保证整个任务栈里面只有一个实例存在
singleInstance启动模式非常特殊, activity会运行在自己的任务栈里面,并且这个任务栈里面只有一个实例存在
* 如果你要保证一个activity在整个手机操作系统里面只有一个实例存在,使用singleInstance
每个应用会有一个Activity任务栈,存放已启动的Activity
Activity的启动模式,修改任务栈的排列情况
standard 标准启动模式
singleTop 单一顶部模式
* 如果任务栈的栈顶存在这个要开启的activity,不会重新的创建activity,而是复用已经存在的activity。保证栈顶如果存在,不会重复创建。
singeTask 单一任务栈,在当前任务栈里面只能有一个实例存在
* 当开启activity的时候,就去检查在任务栈里面是否有实例已经存在,如果有实例存在就复用这个已经存在的activity,并且把这个activity上面的所有的别的activity都清空,复用这个已经存在的activity。保证整个任务栈里面只有一个实例存在
singleInstance启动模式非常特殊, activity会运行在自己的任务栈里面,并且这个任务栈里面只有一个实例存在
* 如果你要保证一个activity在整个手机操作系统里面只有一个实例存在,使用singleInstance