当前位置:编程学习 > wap >>

关于Intent的FLAG_ACTIVITY_NEW_TASK的问题!

   设有一个应用程序T1已经运行,它的activity的状态为:
   A1->A2->A3;

   (1) 这时A3在通过Intent设FLAG_ACTIVITY_NEW_TASK的方式启动A1, 会发现新的A1会叠在A3上,变为:
   A1->A2->A3->A1;

   (2) 如果在另一个应用程序T2中通过Intent设FLAG_ACTIVITY_NEW_TASK的方式启动A1,会发现T1的activity被放到上面,但A3会在最上面,也就是并不会新创建一个A1,目前T1的状态仍然是: 
   A1->A2->A3;

  谁知道这是为什么?我看了activity的源代码,但是没有看出这两个的区别,请大家指教! --------------------编程问答--------------------
(1)
android中有Task的概念,当设置launchFlags 为Intent.FLAG_ACTIVITY_NEW_TASK时,AMS会启动一个新的Task,这种情况下就有了两个Task(task1,task2),task1中有A1-》A2-》A3,task2中仅有有A1;当然如果你设A1的lauchMode为SINGLE_TASK或SINGLE_INSTANCE后,又另当别论了。
(2)
不是很理解你的意思。

--------------------编程问答--------------------
引用 1 楼 xu2081904220 的回复:
(1)
android中有Task的概念,当设置launchFlags 为Intent.FLAG_ACTIVITY_NEW_TASK时,AMS会启动一个新的Task,这种情况下就有了两个Task(task1,task2),task1中有A1-》A2-》A3,task2中仅有有A1;当然如果你设A1的lauchMode为SINGLE_TASK或SINGLE_INSTANCE后,又另当别论了。
(……


(1) A3启动的A1仍然是task1,没有新启动一个task。

(2) 比如你在T1运行中,按home键,回到home屏幕,然后点击T1的程序图标,你会发现仍然是A3会出现在最上面,并不会新启动一个A1. --------------------编程问答-------------------- 猜测下(2)的意思:
T1已运行,且Task顺序为A1-》A2-》A3;
然后运行T2,跨进程启动A1,这时T1中的Task顺序依然为A1-》A2-》A3,是这个意思么?

因为跨进程了,AMS检测到T1进程已存在,就直接把T1进程中的Task按顺序show了出来。
还是那句,A1的launchMode若设为SINGLE_TASK或SINGLE_INSTANCE后,又另当别论了。 --------------------编程问答--------------------
引用 3 楼 xu2081904220 的回复:
猜测下(2)的意思:
T1已运行,且Task顺序为A1-》A2-》A3;
然后运行T2,跨进程启动A1,这时T1中的Task顺序依然为A1-》A2-》A3,是这个意思么?

因为跨进程了,AMS检测到T1进程已存在,就直接把T1进程中的Task按顺序show了出来。
还是那句,A1的launchMode若设为SINGLE_TASK或SINGLE_INSTANCE后,又另当别论了。


为何"AMS检测到T1进程已存在,就直接把T1进程中的Task按顺序show了出来"?请问这个出处是在哪里?有资料的地址么? --------------------编程问答-------------------- 你去看看AMS(ActivityManagerService)源码吧。。。
或者看看介绍android内核剖析之类的书籍找找看相关内容吧。 --------------------编程问答--------------------
引用 5 楼 xu2081904220 的回复:
你去看看AMS(ActivityManagerService)源码吧。。。
或者看看介绍android内核剖析之类的书籍找找看相关内容吧。


我已经看过了,就是因为没有找到相应的处理,才过来提问的 --------------------编程问答-------------------- 我就是想知道, 比如点击应用程序图标运行某程序时,如果这个程序已经启动了,为什么只会将这个程序show出来,而不是重新创建一个activity? --------------------编程问答-------------------- 韩国人[size=50[color=#339966]px]和飞过[/size]海飞过海飞过海[/color]
string s = ""
--------------------编程问答-------------------- 每天回帖即可获得10分可用分!小技巧:教您如何更快获得可用分 你还可以输入10000个字符 --------------------编程问答-------------------- amwih0020我的:收件箱资源博客空间设置|帮助|退出首页业界移动云计算研发论坛博客下载
更多

首页论坛帮助论坛牛人论坛地图


CSDN > CSDN论坛 > 移动开发 > Android
管理菜单 结帖发帖回复
关于Intent的FLAG_ACTIVITY_NEW_TASK的问题! [问题点数:40分]   收藏
cymvp
cymvp
cymvp
等级:Blank
结帖率:80%
楼主 发表于: 2012-01-13 13:21:26
   设有一个应用程序T1已经运行,它的activity的状态为:
   A1->A2->A3;

   (1) 这时A3在通过Intent设FLAG_ACTIVITY_NEW_TASK的方式启动A1, 会发现新的A1会叠在A3上,变为:
   A1->A2->A3->A1;

   (2) 如果在另一个应用程序T2中通过Intent设FLAG_ACTIVITY_NEW_TASK的方式启动A1,会发现T1的activity被放到上面,但A3会在最上面,也就是并不会新创建一个A1,目前T1的状态仍然是: 
   A1->A2->A3;

  谁知道这是为什么?我看了activity的源代码,但是没有看出这两个的区别,请大家指教!
分享到:  
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理 回复次数:9
xu2081904220
xu2081904220
xu2081904220
等级:Blank
#1 得分:0 回复于: 2012-01-13 14:09:46

(1)
android中有Task的概念,当设置launchFlags 为Intent.FLAG_ACTIVITY_NEW_TASK时,AMS会启动一个新的Task,这种情况下就有了两个Task(task1,task2),task1中有A1-》A2-》A3,task2中仅有有A1;当然如果你设A1的lauchMode为SINGLE_TASK或SINGLE_INSTANCE后,又另当别论了。
(2)
不是很理解你的意思。

【发帖折现金】全球最潮正版软件免费送对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
cymvp
cymvp
cymvp
等级:Blank
#2 得分:0 回复于: 2012-01-13 14:19:58
引用 1 楼 xu2081904220 的回复:
(1)
android中有Task的概念,当设置launchFlags 为Intent.FLAG_ACTIVITY_NEW_TASK时,AMS会启动一个新的Task,这种情况下就有了两个Task(task1,task2),task1中有A1-》A2-》A3,task2中仅有有A1;当然如果你设A1的lauchMode为SINGLE_TASK或SINGLE_INSTANCE后,又另当别论了。
(……

(1) A3启动的A1仍然是task1,没有新启动一个task。

(2) 比如你在T1运行中,按home键,回到home屏幕,然后点击T1的程序图标,你会发现仍然是A3会出现在最上面,并不会新启动一个A1.
用Visual Studio开发 iOS、Android 应用,你也可以!对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
xu2081904220
xu2081904220
xu2081904220
等级:Blank
#3 得分:0 回复于: 2012-01-13 14:21:18
猜测下(2)的意思:
T1已运行,且Task顺序为A1-》A2-》A3;
然后运行T2,跨进程启动A1,这时T1中的Task顺序依然为A1-》A2-》A3,是这个意思么?

因为跨进程了,AMS检测到T1进程已存在,就直接把T1进程中的Task按顺序show了出来。
还是那句,A1的launchMode若设为SINGLE_TASK或SINGLE_INSTANCE后,又另当别论了。
关注CSDN论坛微博 送CSDN积分大礼包对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
cymvp
cymvp
cymvp
等级:Blank
#4 得分:0 回复于: 2012-01-13 14:26:19
引用 3 楼 xu2081904220 的回复:
猜测下(2)的意思:
T1已运行,且Task顺序为A1-》A2-》A3;
然后运行T2,跨进程启动A1,这时T1中的Task顺序依然为A1-》A2-》A3,是这个意思么?

因为跨进程了,AMS检测到T1进程已存在,就直接把T1进程中的Task按顺序show了出来。
还是那句,A1的launchMode若设为SINGLE_TASK或SINGLE_INSTANCE后,又另当别论了。

为何"AMS检测到T1进程已存在,就直接把T1进程中的Task按顺序show了出来"?请问这个出处是在哪里?有资料的地址么?
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
xu2081904220
xu2081904220
xu2081904220
等级:Blank
#5 得分:0 回复于: 2012-01-13 14:30:02
你去看看AMS(ActivityManagerService)源码吧。。。
或者看看介绍android内核剖析之类的书籍找找看相关内容吧。
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
cymvp
cymvp
cymvp
等级:Blank
#6 得分:0 回复于: 2012-01-13 14:37:07
引用 5 楼 xu2081904220 的回复:
你去看看AMS(ActivityManagerService)源码吧。。。
或者看看介绍android内核剖析之类的书籍找找看相关内容吧。

我已经看过了,就是因为没有找到相应的处理,才过来提问的
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
cymvp
cymvp
cymvp
等级:Blank
#7 得分:0 回复于: 2012-01-13 18:15:57
我就是想知道, 比如点击应用程序图标运行某程序时,如果这个程序已经启动了,为什么只会将这个程序show出来,而不是重新创建一个activity?
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
amwih002
amwih002
amwih002
等级:Blank
#8 得分:0 回复于: 2013-11-12 15:00:53
韩国人[size=50px]和飞过[/size]海飞过海飞过海
Java code
?
1
string s = ""
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
amwih002
amwih002
amwih002
等级:Blank
#9 得分:0 回复于: 2013-11-12 15:22:45
每天回帖即可获得10分可用分!小技巧:教您如何更快获得可用分 你还可以输入10000个字符
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
管理菜单 结帖发帖回复
加入联想俱乐部 赢豪礼送积分
CSDN版主团队火热招募啦
台湾程序员游戏开发经历
陈勇- 敏捷开发现状及发展之路

关注CSDN论坛微博送可用分
CSDN论坛微博主要发布程序员职场经验,生活指南,IT八卦等内容,关注就有积分相送噢!
回复内容
编辑预览
粗体
斜体
下划线
---------------
字体大小
字体颜色
---------------
图片
链接
---------------
左对齐
居中对齐
右对齐
---------------
引用
代码
---------------
QQ
monkey
onion
---------------
押宝
---------------
清除格式

每天回帖即可获得10分可用分!小技巧:教您如何更快获得可用分 你还可以输入10000个字符(Ctrl+Enter)
请遵守CSDN用户行为准则,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。
核心技术类目
全部主题 数据挖掘 SOA UML Teradata 开放平台 HTML5 创业 开源 移动开发 iOS Android 移动游戏 Windows Phone JavaScript CSS 游戏引擎 云计算 大数据 Hadoop OpenStack 云平台 PHP MongoDB JSON Xcode Node.js 前端开发 神经网络 黑客 安全 Java .NET MySQL textview BigTable web框架 SQL Redis GitHub CouchDB Oracle JavaEE
[关闭][关闭] Top_arrow
公司简介|招贤纳士|广告服务|银行汇款帐号|联系方式|版权声明|法律顾问|问题报告
QQ客服 微博客服 论坛反馈 联系邮箱:webmaster@csdn.net 服务热线:400-600-2320
京 ICP 证 070598 号
北京创新乐知信息技术有限公司 版权所有
世纪乐知(北京)网络技术有限公司 提供技术支持
江苏乐知网络技术有限公司 提供商务支持
Copyright © 1999-2012, CSDN.NET, All Rights Reserved GongshangLogo

您有2条新通知
补充:移动开发 ,  Android
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,