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"

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。