Activity的四种加载模式
来源:互联网 发布:百度bae连接数据库 编辑:程序博客网 时间:2024/06/05 22:30
这4中模式又分两类,standard和signleTop属于一类, singleTask和signleInstance属于另一类。
standard和singleTop属性的 Activity 的实例可以属于任何任务(Task),并且可以位于Activity堆栈的任何位置。比较典型的一种情况是,一个任务的代码执行startActivity(),如果传递的 Intent 对象没有包含 FLAG_ACTIVITY_NEW_TASK 属性, 指定的 Activity 将被该任务调用,从而装入该任务的Activity 堆栈中。 standard和singleTop的区别在于:standard模式的Activity在被调用时会创建一个新的实例,所有实例处理同一个Intent对象; 但对于singleTop模式的Activity,如果被调用的任务已经有一个这样的Activity 在堆栈的顶端,那么不会有新的实例创建, 任务会使用当前顶端的Activity实例来处理Intent对象,换句话说,如果被调用的任务包含一个不在堆栈顶端的 singleTop Activity, 或者堆栈顶端为 singleTop 的Activity的任务不是当前被调用的任务,那么,仍然会有一个新的Activity对象被创建。
singleTask 和 singleInstance模式的Activity 仅可用于启动任务的情况, 这种模式的Activity总是处在Activity堆栈的最底端,并且一个任务中只能被实例化一次。两者的区别在于:
对于 singleInstance模式的Activity, 任务的Activity堆栈中如果有这样的Activity,那它将是堆栈中的唯一的 Activity, 当前任务收到的 Intent 都由它处理, 由它开启的其他 Activity 将在其他任务中被启动;
a->b->a
03-08 13:13:07.910 4014-4014/? E/resulttt: this.getTaskId()====AActivity27
03-08 13:13:08.046 4014-4014/? E/resulttt: this.getTaskId()====BActivity28
03-08 13:13:11.482 4014-4014/? E/resulttt: this.getTaskId()====AActivity27
对于 SingleTask模式的Activity,它在堆栈底端,其上方可以有其他Activity被创建, 但是,如果发给该Activity的Intent对象到来时该Activity不在堆栈顶端,那么该Intent对象将被丢弃,但是界面还是会切换到当前的Activity。
a->b->a
03-08 13:15:08.722 4102-4102/? E/resulttt: this.getTaskId()====AActivity30
03-08 13:15:08.750 4102-4102/? E/resulttt: this.getTaskId()====BActivity30
03-08 13:16:44.666 4102-4102/? E/resulttt: this.getTaskId()====AActivity30
and应用场景
- 【Activity】Activity的四种加载模式
- 区分Activity的四种加载模式
- 区分Activity的四种加载模式
- 区分Activity的四种加载模式
- 区分Activity的四种加载模式
- 话说Activity的四种加载模式
- 区分Activity的四种加载模式
- 区分activity的四种加载模式
- 区分activity的四种加载模式
- 区分activity的四种加载模式
- Activity的四种加载模式
- Activity的四种加载模式
- Activity的四种加载模式
- 区分Activity的四种加载模式
- Activity的四种加载模式
- Activity的四种加载模式
- Android四种Activity的加载模式
- Android四种Activity的加载模式
- matlab 的cov()函数
- 使用python内置smtplib模块发送邮件
- jsp九大内置对象说明
- jenkins自动化部署github项目
- 对串口的读写,将读取的内容写在文件里,以及一些文件的读写操作
- Activity的四种加载模式
- Python与ZooKeeper集群连接
- 使用spring+flying sauser +velocity 导出文字+表格+echars图表为PDF
- 切换Python2和Python3的方法
- 纠正编码错误篇 (1)必须严肃的说,inflater使用null是错误的
- StrutsPrepareAndExecuteFilter源码分析
- Invalid value set for db.setupType, the valid values are EMBEDDED or EXTERNAL
- 学习OpenCV范例(十八)——反向投影
- 快速排序知多少?