关于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 ...
随机推荐
- BFS:UVa201-Squares
Squares A children's board game consists of a square array of dots that contains lines connecting so ...
- WIN10配置MAVEN
添加新的系统环境变量M2_HOME, 并设置其值为你安装的目录MAVEN_HOME=D:\Softwares\apache-maven-3.2.2. 更新系统PATH 变量, 添加;%M2_HOME% ...
- 【死磕 Spring】
[死磕 Spring]----- IOC 之深入理解 Spring IoC-------https://www.cnblogs.com/chenssy/p/9576769.html 1.Resourc ...
- centos 7安装libreoffice
centos 7安装libreoffice Centos下的LibreOffice安装: 关键字: LibreOffice , sdk ,汉化 ,解压 安装Centos7之后,系统安装了libreo ...
- 【LeetCode】Design Linked List(设计链表)
这道题是LeetCode里的第707到题.这是在学习链表时碰见的. 题目要求: 设计链表的实现.您可以选择使用单链表或双链表.单链表中的节点应该具有两个属性:val 和 next.val 是当前节点的 ...
- 图论trainning-part-2 B. Claw Decomposition
B. Claw Decomposition Time Limit: 1000ms Memory Limit: 131072KB 64-bit integer IO format: %lld ...
- LeetCode--二分查找相关算法
-(1)有一个升序排列的非负数组,要求利用o(logn)的时间复杂度找到数组中确定数字target的第一次出现的位置下标和最后一次出现的位置下标,如果不存在该target返回[-1,-1] 解决方案: ...
- hdu6069[素数筛法] 2017多校4
对于[l , r]内的每个数,根据唯一分解定理有 所以有 因为 //可根据唯一分解定理推导 所以 题目要求 就可以运用它到上述公式 (注意不能暴力对l,r内的数一个个分解算贡献 ...
- FZU 2020 :组合 【lucas】
Problem Description 给出组合数C(n,m), 表示从n个元素中选出m个元素的方案数.例如C(5,2) = 10, C(4,2) = 6.可是当n,m比较大的时候,C(n,m)很大! ...
- BZOJ3532 [Sdoi2014]Lis 【网络流退流】
题目 给定序列A,序列中的每一项Ai有删除代价Bi和附加属性Ci.请删除若 干项,使得4的最长上升子序列长度减少至少1,且付出的代价之和最小,并输出方案. 如果有多种方案,请输出将删去项的附加属性排序 ...