Android Activity生命周期和启动模式

Activity的生命周期及启动模式

常用回调方法:

onCreate:activity创建过程,正在初始化,setContentView加载布局资源

onStart:activity正在启动,activity已经加载完布局可以显示,但Activity还处在后台,未在前台无法和用户交互

onResume:activity在运行状态,可见,在前台,可以交互

onPause:activity正在停止,可以做些保存数据,停止动画的操作,但不能耗时过久,因为会影响新的activity的显示

(旧activity的onPause执行后新activity才能onResume)

onStop:activity即将停止,onSaveInstanceState在这之前执行,同样不能太耗时的操作

onDestroy:activity销毁,可以在这里进行回收和资源释放

onRestart:activity从不可见重新变为可见,stop()重新回到onstart状态的时候调用(典型例子就是按home,然后重新点开APP)

onSaveInstanceState:activity异常终止前在onStop前调用该方法保存数据

 

一个进程如果没有四大组件在执行,容易被系统杀死,所以后台程序最好放到Service中执行

 

四种状态:

运行:activity处于栈顶,并且可见状态

暂停:activity不在栈顶,但是可见或部分可见

停止:activity不在栈顶并且不可以,处于停止状态可能会被系统回收

销毁:activity从栈中移除,系统最倾向于回收该类activity

 

activity的四种启动模式:

standard标准模式:谁启动了activity,就在那个栈中创建activity实例入栈顶(用Application启动标准模式的activity会报错,因为Application没有栈),如果栈里已有该activity实例,也会创建实例并入栈顶

singleTop栈顶复用:判断栈顶是否已经是该activity实例,如果是,则不会重新创建,调用onNewIntent方法,如果不是,则创建入栈顶

singleTask栈内复用:先判断指定的任务栈是否存在,不存在则创建一个新的任务栈,并创建实例入栈,如果指定的任务栈存在,则判断栈中是否有该activity实例,如果有,则不会重新创建,调用onNewIntent方法,并且该实例上面的其他activity实例出栈,如果没有,则创建实例入栈顶

singleInstance单实例模式:activity独自位于一个任务栈,之后多次调用该activity均不会创建实例(因为activity单独位于一个任务栈并处于栈顶),除非该任务栈被系统销毁

启动模式可以在标签android:launchMode:"singleTask"设置,或者在代码中设置intent.addFlags()

上面多次提到指定任务栈,用TaskAffinity参数指定,默认任务栈名为应用的包名,一般配合singleTask使用

任务栈分前台任务栈后台任务栈:后台任务栈处于暂停状态,可见但不能交互

 

Activity生命周期在手机使用的各个情况中的简要说明(锁屏/熄屏,手机横屏,手机按home键回到主页面)

手机打开app并且横屏:销毁activity并且重新创建activity

Android Activity生命周期和启动模式_第1张图片

 

手机熄屏,锁屏,以及按home键回到主页面:Activity进入停止状态

 

手机重新点开app,或者重新开启屏幕:Activity回到运行状态

 

 

Activity和Fragment回调方法的先后执行顺序

创建与销毁

Android Activity生命周期和启动模式_第2张图片

停止与恢复运行 

Android Activity生命周期和启动模式_第3张图片

Android Activity生命周期和启动模式_第4张图片 

你可能感兴趣的:(Android技术小点,Android概念)