Android开发艺术探索学习笔记---Android启动模式

activity使用来管理activity们

activity的LaunchMode

1、standard 每次启动都会重新创建一个activity,不管在栈中是否已经存在,新建的activity在栈顶。谁启动了这个activity,这个activity就运行在启动它的那个activity所在的栈中

用application去启动activity,会报错,是因为非activity的context没有任务栈,解决方法是可以为启动的activity指定FLAGACTIVITYNEW_TASK,这样就为他创建一个新的任务栈

2、singleTop,如果新的activity在栈顶,那activity就不会被重新创建,同时回调onNewIntent,不会执行onCreate和onStart方法

3、singleTask,单实例模式,如果栈中存在该activity,则移除栈中该activity上的所有activity,并调用该activity的onNewIntent方法。如果栈中不存在该activity,则创建一个新的activity

4、singleInstance,会直接创建一个新的任务栈,如果该任务栈在后台存在,则此后台任务栈被切换到前台

设置启动模式

1、manifest设置launchmode

2、在代码中intent.addFlags(Intent.FLAGACTIVITYNEW_TASK)

3、两者同时存在时,以第二种为准,第一种无法指定FLAGACTIVITYCLEAR_TOP标识,第二种无法指定singleinstance

activity的flags

这些flag可以设置activity的启动模式

FLAGACTIVITYNEW_TASK,为activity指定singleTask模式

FLAGACTIVOTYSINGLE_TOP,为activity指定singleTop模式

FLAGACTIVITYCLEAR_TOP,将同一任务栈,位于该activity上面的都移除栈,与FLAGACTIVITYNEW_TASK配合使用

FLAGACTIVITYEXCLUDEFROMRECENTS,如果设置新的activity不会再最近启动的activity的列表中保存,等同于在xml中设置andriod:excludeFromRecents="true"

你可能感兴趣的:(Android开发艺术探索学习笔记---Android启动模式)