关于Activity启动模式(launchMode)和intent设置测试后 发现和网上说的不符 是不是我错了 求解
看了很多关于Activity启动模式(launchMode)和intent设置intent.setFlags
(Intent.FLAG_ACTIVITY_NEW_TASK);
发现网上说的和我测试结果 不符。
想必大家一定看过 http://marshal.easymorse.com/archives/2950 这篇文字的解说。 我当初看完之后
觉得确实很清晰了
但又看了其他人的关于结合intent的Flags 以及ActibvityAffiity属性等文章后 越来越迷糊。
现在说说我的不解 :
先看大多数 大家总结的4种方式如下:
standard 每次都会新建,每个Task都可以有,且每个Task都可以有多个实例(每个Task都可以有,且
可以有多个)
singleTop 当前实例如果在栈顶,就不新建实例,调用其OnNewIntent。 如不在栈顶,则新建实例 (
每个Task都可以有,且可以有多个,在栈顶时可复用)
singleTask 新建一个Task,如果已经有其他的Task并且包含该实例,那就直接调用那个Task的实例。(
只有一个Task中会有)
singleInstance 新建一个Task,且在该Task中只有它的唯一一个实例。 (只有一个Task会有,且该Task
中只有它)
standard 没有悬念很好理解 测试也符合。
singleTop 也基本理解,但有人说如果配合FLAG_ACTIVITY_NEW_TASK使用则会产生新的TASK 对此我测试
的时候 并没有发现有新的TASK产生 打印的TASKID依然是原先的。
singleTask 对此很迷糊 大家都说是产生了一个新TASK 测试后并无发现创建了新TASK 且加上
FLAG_ACTIVITY_NEW_TASK也无效,依然是TASKID无变化,是不是我理解错误呢?
singleInstance 对此表示理解 且经过测试 也都符合文档描述。且创建了新的TASKID 且 这个TASKID种
只有它自己的实例存在。
附上我的测试过程
test.task.ActivityB(standard) ->(FLAG_ACTIVITY_NEW_TASK)-> test.task.ActivityC(standard)
TASKID 无变化
test.task.ActivityB(standard) ->(FLAG_ACTIVITY_NEW_TASK)-> test.task.ActivityC(singleTop)
TASKID 无变化
test.task.ActivityB(standard) ->(FLAG_ACTIVITY_NEW_TASK)-> test.task.ActivityC(singleTask)
TASKID 无变化
test.task.ActivityB(standard) ->(FLAG_ACTIVITY_NEW_TASK)-> test.task.ActivityC(singleTask)
TASKID 有变化 新TASKID
希望前辈帮我理清这个基础性的东西,同时也帮助更多新手 对此概念进行进一步的强化。
关于Activity启动模式(launchMode)和intent设置测试后 发现和网上说的不符 是不是我错了 求解的更多相关文章
- Android 之Activity启动模式(二)之 Intent的Flag属性
首页博客链接关于我留言板 前面介绍了通过launchMode设置Activity的启动模式.本章接着介绍Activity的启动模式相关内容,讲解的内容是Intent与启动模式相关的Flag,以及and ...
- 深入Activity,Activity启动模式LaunchMode完全解析
转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/53221384本文出自[DylanAndroid的博客] 在平时的开发中,我们可 ...
- activity启动模式launchMode区别和优化
初学android的开发人员,可能会经常忽略这个重要的设置. Activity一共有以下四种launchMode:1.standard2.singleTop3.singleTask4.singleIn ...
- Android组件体系之Activity启动模式解析
本文主要分析Activity的启动模式及使用场景. 一.Activity启动模式浅析 1.standard 标准模式,系统默认的启动模式.在启动Activity时,系统总是创建一个新的Activity ...
- Activity启动模式 及 Intent Flags 与 栈 的关联分析
http://blog.csdn.net/vipzjyno1/article/details/25463457 Android启动模式Flags栈Task 目录(?)[+] 什么是栈 栈 ...
- 【转】Activity启动模式 及 Intent Flags 与 栈 的关联分析
http://blog.csdn.net/vipzjyno1/article/details/25463457 在学习Android的过程中,Intent是我们最常用Android用于进程内或进 ...
- Android Activity 的四种启动模式 lunchMode 和 Intent.setFlags();singleTask的两种启动方式。
原文:Android Activity 的四种启动模式 lunchMode 和 Intent.setFlags();singleTask的两种启动方式. Android Activity 的四种启动模 ...
- Activity启动模式
------siwuxie095 共4种启动模式:standard singleTop singleTask singleInstance 1.标准启动模式(standard) 也即默认的启动模式 ( ...
- Android中Activity启动模式详解
在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作.在Android中Activity的启动模式决定了Activity的启动运行方式. An ...
随机推荐
- SAXException Parser configuration problem: namespace reporting is not enabled
问题描述: 用sax的方式组装xml,在tomcat上正常运行,在weblogic12c上报错: SAXException Parser configuration problem: namespac ...
- xfce-openvas9
1安装OpenVas 第一步,添加PPA源,在这我用的是一台新装的Ubuntu安装OpenVas,运行以下命令就可以进行安装 root@ubuntu:~# add-apt-repository ppa ...
- python3将unicode转化成中文输出
a = [] with open('douban.json','r') as f: for i in f.readlines(): a.append((i.encode('utf8').decode( ...
- 给定一颗二叉搜索树,请找出其中的第k大的结点。例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,按结点数值大小顺序第三个结点的值为4。
/* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x ...
- 【HTML/XML 2】XML基础知识点总结
导读:刚开始看到这个名的时候,还以为会和HTML一样呢,结果看完了资料里的视频,才发现是各有千秋.现在,就对XML的基础知识,做一个总结. 一.总体概述 XML(Extensible Markup L ...
- javascript前端下载
<html> <head> <title>测试标题</title> </head> <body> <div> 测试页 ...
- bzoj2648/2716 kdtree
SJY摆棋子 Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 5199 Solved: 1813[Submit][Status][Discuss] D ...
- Spring-IOC源码解读2.2-BeanDefinition的载入和解析过程
1. 对IOC容器来说这个载入过程就像是相当于把BeanDefinition定义的信息转化成Spring内部表示的数据结构.容器对bean的管理和依赖注入过程都是通过对其持有的BeanDefiniti ...
- BS4(BeautifulSoup4)的使用--find_all()篇
可以直接参考 BS4文档:https://www.crummy.com/software/BeautifulSoup/bs4/doc/index.zh.html#find-all 注意的是: 1.有些 ...
- 转 Linux文件管理
Linux文件管理 http://www.cnblogs.com/vamei/archive/2012/09/09/2676792.html 作者:Vamei 出处:http://www.cnblog ...