Activity的“四种”启动模式
2015-12-14 11:49
295 查看
Activity的启动模式.(熟悉)
1. "standard" (the default mode) 标准模式(activity默认的模式),
当调用startActivity方法开启界面, 会实例化多个实例在任务栈中, 相互不影响.
问题: 会在任务栈中实例化多个对象. 重复的太多. 容易内存溢出.
2. "singleTop" 单顶部模式.
如果被开启的activity已经在任务栈的顶部, 这时候不会创建一个新的实例, 而是调用栈顶activity的onNewIntent方法.
如果当前任务栈中已经有被开启的activity, 但是不在顶部, 这时候会创建一个新的实例在任务栈中.
应用场景: 有些流氓程序员, 攻击我们程序, 不停的开启页面, 就采用单顶部模式就可以解决【重要】.
3. "singleTask" 单任务栈.
如果被开启的activity已经存在任务栈中, 那调用startActivity方法开启此页面时, 不会再创建一个新的实例, 调用onNewIntent方法.
而是把当前的activity显示出来(提到栈顶), 同时, 会把当前任务栈中activity以上的所有activity全部清除出栈.
如果说当前的activity已经在栈顶, 直接调用onNewIntent方法.
应用场景: 一般应用在页面加载非常庞大时, 非常消耗资源. 只想初始化一次就够了, 以后不想再初始化实例, 就采用singleTask模式.
4. "singleInstance". 单一实例.
如果被开启的activity没有实例化过对象, 调用startActivity开启页面时, 会创建一个新的任务栈给activity使用,
并且当前任务栈只有它自己存在, 其它的activity不会在此任务栈中创建新的实例.
如果被开启的activity已经实例化过, 那么会调用onNewIntent方法.
在整个系统中, 无论哪一个应用程序开启当前采用singleInstance的activity,
如果已经实例化过, 那么始终都是调用的同一个activity, 而且是在同一个任务栈中.
应用场景: 需要常驻系统中的页面采用这种方式.(比方说桌面应用程序)
<activity android:name=".MainActivity" android:launchMode="standard" />
1. "standard" (the default mode) 标准模式(activity默认的模式),
当调用startActivity方法开启界面, 会实例化多个实例在任务栈中, 相互不影响.
问题: 会在任务栈中实例化多个对象. 重复的太多. 容易内存溢出.
2. "singleTop" 单顶部模式.
如果被开启的activity已经在任务栈的顶部, 这时候不会创建一个新的实例, 而是调用栈顶activity的onNewIntent方法.
如果当前任务栈中已经有被开启的activity, 但是不在顶部, 这时候会创建一个新的实例在任务栈中.
应用场景: 有些流氓程序员, 攻击我们程序, 不停的开启页面, 就采用单顶部模式就可以解决【重要】.
3. "singleTask" 单任务栈.
如果被开启的activity已经存在任务栈中, 那调用startActivity方法开启此页面时, 不会再创建一个新的实例, 调用onNewIntent方法.
而是把当前的activity显示出来(提到栈顶), 同时, 会把当前任务栈中activity以上的所有activity全部清除出栈.
如果说当前的activity已经在栈顶, 直接调用onNewIntent方法.
应用场景: 一般应用在页面加载非常庞大时, 非常消耗资源. 只想初始化一次就够了, 以后不想再初始化实例, 就采用singleTask模式.
4. "singleInstance". 单一实例.
如果被开启的activity没有实例化过对象, 调用startActivity开启页面时, 会创建一个新的任务栈给activity使用,
并且当前任务栈只有它自己存在, 其它的activity不会在此任务栈中创建新的实例.
如果被开启的activity已经实例化过, 那么会调用onNewIntent方法.
在整个系统中, 无论哪一个应用程序开启当前采用singleInstance的activity,
如果已经实例化过, 那么始终都是调用的同一个activity, 而且是在同一个任务栈中.
应用场景: 需要常驻系统中的页面采用这种方式.(比方说桌面应用程序)
<activity android:name=".MainActivity" android:launchMode="standard" />
相关文章推荐
- Android实现表情 抓取新浪表情
- 详解Android解析Xml的三种方式——DOM、SAX以及XMLpull
- android开发环境遇到adt无法启动的问题分析及解决方法
- Android开发 旋转屏幕导致Activity重建解决方法
- Android开发技巧之在a标签或TextView控件中单击链接弹出Activity(自定义动作)
- Android开发技巧之ViewStub控件惰性装载
- 分享10个很棒的学习Android开发的网站
- android开发之横向滚动/竖向滚动的ListView(固定列头)
- Android开发技巧之我的菜单我做主(自定义菜单)
- Windows下使用Apache Cordova开发ANDROID之HelloWorld
- 根据根据图片的url怎么取得图片ImageView对象
- [转] ADB server didn't ACK
- android开发的相关链接
- Android数据存储之SharedPreferences 共享首选项/偏好设置
- 基于NDK的Android防破解
- 麦子学院android开发笔记:Android更换RatingBar图片
- android开发入门知识之AIDL详解
- AutoCompleteTextView组件的功能和用法
- Android的TabHost组件的功能和用法