您的位置:首页 > 其它

Activity的LaunchMode应用场景思考

2016-03-03 11:39 330 查看
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。



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的说明还不错,这个见过,不过自己还真没用过。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: