《Android学习计划》《第三周》

来源:互联网 发布:桌面总是出现精选淘宝 编辑:程序博客网 时间:2024/06/01 07:23

《Android学习计划》《第三周》

话题:理解Activity的启动模式。
1、Activity的启动模式有哪几种,分别用于什么场景?
2、清晰地描述下onNewIntent和onConfigurationChanged这两个生命周期方法的场景?

如何学习?
请从网上查找相干主题的内容,或者参考Android开发艺术探索第一章,还可以阅读Android官方文档中有关启动模式的章节。

回答:

启动模式有四种分别是:standard,singleTop,singleTask,singleInstance
1.standard标准模式,standard模式下启动的activity都会压入自己的任务栈中。
应用场景:无特殊要求,都会是standard模式启动activity。
2.singleTop栈顶复用模式,为了解决重复创建activity导致的资源浪费问题。如果要开启的activity和当前的activity一样的话,则不会新创建activity,而是直接复用当前的activity。
应用场景:1.电商项目,商品详情页->商品详情页。
2.解决快速点击导致同时开启两个相同的activity(我们目前这么用,可能控制快速点击好一些 ^_^)
3.singleTask栈内复用模式,singleTask开启activity,会检查当前的任务栈(不指定taskAffinity的情况下,默认是自己的包名)和要开启的activity的任务栈是不是同一个任务栈,
1.如果是同一个的话,检查当前的任务栈中是否有要开启的activity,如果有的话,则会复用栈内的activity,并将中间的activity全部出栈,如果没有,则创建一个新的activity压入栈中。
应用场景:电商项目 购物车页面->支付页面->支付完成页面->购物车页面。

2.如果要开启的activity和当前的activity不在同一个任务栈中,要检查所有的任务栈中是否和有和要启动的activity相同的任务栈,如果有,同1,如果没有,则创建一个新的任务栈,并将要启动的activity压入该任务栈中。(写的好晕啊,呜呜。)
应用场景:应用A的activity ->应用B的Activity (好多情况使用singleTask模式启动)。
singleInstance 。任务栈中有且只有这一个activity,此activity 只会有一个实例。
场景:浏览器。

onNewIntent:singleTop、singleTask、singleInstance模式启动的activity会走onNewIntent回调。

onConfigurationChanged activity可以指定Android:configChanges=”orientation|keyboard”,当指定的这些系统配置触发了,则会会调 onConfigurationChanged 。

原创粉丝点击