android LaunchMode之SingleTask

  次阅读 来源:互联网(转载协议) 2016-01-14 12:37 我要评论(0)

昨天看了一下SingleTask的LaunchMode,意思是说如果一个Activity在Manifest文件中的LaunchMode设置为SingleTask时,该Activity就在一个独立的Task中。当时看了文档之后,有点不明白的是 在一个独立的task中 如何理解?

其实,这句话的意思是保证这个activity处于"某一个"task中,而不管当前task中是否有其他activity(这也许就是与SingleInstance的根本区别吧)。例如,我们有Root Activity A,在A中启动了ActivityB(launch mode是sinleTask)。这时Application Task的stack是B A,如果我们回到Home,启动另一个Application的Activity C,如果在C中启动B,则系统会将之前的Task Stack放到前台。这时用户看到的就是B。当按back时返回的是B的前一个Activity A.再back时退出前一个stack,回到当前的stack,即C。

考虑另一种情况,B依旧是SingleTask的. 在一个Application的Task Stack中有C B A,然后在另一个Application中启动B。这时会发生什么?

答案是:系统会把前一个Task放到前台,但是它的stack已经变成B A,C已经被系统丢弃了。

总结:1、SingleTask的Activity只能在一个Task中,系统总是能找到一个已经存在的Activity;

2、当在其他app中调用某个singleTask的Activity时,需要注意:系统会把这个Activity之上的activity都清空,并将它所在的Task Stack置于前台,可能会导致其他APP的状态丢失。

补充一下singleInstance的感受:

single instance有点像single task,它总是一个activity占据一个task stack。在同一个app中,A->B,会有两个stack,B在前,A在后,如果此时B->C,会出现以下情况:

C

AB

如果退出C,返回到A,退出A,返回到B

如果是在其他的app中X-B

BX

如果此时再B->C,则会出现如下:

C B X

返回时依次显示。

adb shell dumpsys activity查看task stack.

本站部分文章来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • Oculus公布原型机,大幅度提升可视角,能实现140°的视场水平

    Oculus公布原型机,大幅度提升可视角,能实现140°的视场水平

  • Michael I. Jordan带你解读百万奖金ATEC蚂蚁人工智能大赛

    Michael I. Jordan带你解读百万奖金ATEC蚂蚁人工智能大赛

  • teamLab创始人猪子寿之: 抛去衣食住行,我还剩下什么?

    teamLab创始人猪子寿之: 抛去衣食住行,我还剩下什么?

  • 2018深圳国际人工智能展览会 2018 shenzhen International Artif

    2018深圳国际人工智能展览会 2018 shenzhen International Artif

网友点评网友点评
阅读推荐阅读推荐

据外媒报道,STEER打造了首款完全自动驾驶停车技术,旨在使常规车辆转变为无人驾驶车辆。STEER的首款技术应用是4级自动驾驶及网络安全停车...

近日,美国软性机器抓手制造商 Soft Robotics 宣布,获得 2000 万美元的融资,本轮投资者包括 Scale Venture Partners,Calibrate Ventures...

据外媒报道,加州车管局发布了《2017自动驾驶脱离报告(California Autonomous Vehicle Disengagement Reports)》,其中谈及了脱离的具体...

用人机语音交互,来解决智能家居适老的问题;通过家庭门禁与安防套件、空气净化套件、可燃气体与有害气体监控套件等相互联动,在不同生活情...