Activity的LaunchMode应用场景思考

本文链接: http://blog.csdn.net/xiaodongrush/article/details/28597855

1. 有哪几种类型?分别有什么用?
http://developer.android.com/guide/components/tasks-and-back-stack.html
standard,创建一个新的Activity。
singleTop,栈顶不是该类型的Activity,创建一个新的Activity。否则,onNewIntent。
singleTask,回退栈中没有该类型的Activity,创建Activity,否则,onNewIntent+ClearTop。
singleInstance,回退栈中,只有这一个Activity,没有其他Activity。
Activity的LaunchMode应用场景思考_第1张图片

2. 应用场景如何?
http://www.intridea.com/blog/2011/6/16/android-understanding-activity-launchmode
http://stackoverflow.com/questions/2626218/examples-for-android-launch-modes
singleTop适合接收通知启动的内容显示页面。
例如,某个新闻客户端的新闻内容页面,如果收到10个新闻推送,每次都打开一个新闻内容页面是很烦人的。
singleTask适合作为程序入口点。
例如浏览器的主界面。不管从多少个应用启动浏览器,只会启动主界面一次,其余情况都会走onNewIntent,并且会清空主界面上面的其他页面。
singleInstance适合需要与程序分离开的页面。
例如闹铃提醒,将闹铃提醒与闹铃设置分离。
singleInstance不要用于中间页面,如果用于中间页面, 跳转会有问题,比如:A -> B (singleInstance) -> C,完全退出后,在此启动,首先打开的是B。

3. TaskAffinity对LaunchMode的影响
http://blog.csdn.net/linmiansheng/article/details/24297375
不指定TaskAffinity,singleTask会在默认的task 中执行,这个符合预期,一般也都是这么用的,不需要指定。
不指定TaskAffinity,singleInstance之后启动的页面不能放倒singleInstance所在那个task中,会放倒默认的task中,不过一般singleInstance也不适合作为程序中间页。
这篇文章对taskaffinity的说明还不错,这个见过,不过自己还真没用过。

你可能感兴趣的:(Android基础知识)