singletask生命周期

singletask生命周期1.singleTask和singletop都是保真了Activity在栈中的唯一性  2.singleTask和singleTop实例存在时,都不会重新创建newtask  不同之处有如下几点:  如果singleTask启动的ActivityA位于栈底,在栈顶startActivity到这个ActivityA时会调动 onNewInt

大家好,又见面了,我是你们的朋友全栈君。

1.singleTask和singletop都是保真了Activity在栈中的唯一性

  2.singleTask和singleTop实例存在时,都不会重新创建 new task

  不同之处有如下几点:

  如果singleTask启动的ActivityA位于栈底,在栈顶startActivity到这个ActivityA时会调动 
onNewIntent->onStart->onResume。

  但singleTask启动的的ActivityA不存在时,会重新创建ActivityA,调用方式OnCreate->OnStart->OnResume

  2.如果singletop启动的ActivityB在栈底时,在栈顶startActivity到这个ActivityB时会重新调动 
onCreate->onStart->onResume,但不会调用OnDestroy

  并且singletop启动的的ActivityB不存在时,会重新创建ActivityB,调用方式OnCreate->OnStart->OnResume

  3.singleTask在栈底时,从栈顶startActivity到栈底ActivityA,那么该栈startActivity的发起者的中间部分Activity会被销毁。而singletop是逐级跳跃到栈顶

  singleTask

singletask生命周期

  singletop

singletask生命周期

  追加一点singleInstance,虽然也是保证唯一性,但改模式的Activity是全局性的唯一性,生命周期和应用程序相同,不能及时回收,此外的话Activity在MVC充当Controller的角色,

  这点显然对singleIntance来说不适合,因此不建议使用。

  4.singleTask不适合充当ChildActivity,但singletop适合

  5.对作业栈,默认情况下,没有任何影响,因为栈的taskid是相同的,可以获取getTaskid(),默认情况下每个activity的taskid相同

  但是,如果自定义了栈的标签(这个标签相同的singletask activity在同一个作业栈中),那么taskid就会初选差别

  android:taskAffinity=”com.sample.lanchmode.tester.main”,那么一旦另一个作业栈被销毁,下次必然重建(相信我,这不是废话)。

  为了一句不是废话,我需要来证明一下。

  当我们的初始加载WelcomeActivity界面—>HomeActivity界面时,如果将HomeActivity的启动模式设置为sigleTask+android:taskAffinity=”自定义(一般是类名)”,

  ①那么WelcomeActivity销毁后,在到达HomeActivity之后,HomeActivity回作为一个新的作业栈栈底而存在,所以由HomeActivity启动的Activity的TaskId和HomeActivity相同。

  ②这个过程,WelcomeActivity和HomeActivity的TaskId是不相同的,问题出现了,当我们按下 Home键,然后在点击桌面上的app图标你会发现,WelcomeActivity再次出现了,

  而且再次进入了HomeActivity,并且这个HomeActivity调用了OnNewIntent,却没掉用OnCreate,所以来说他一直存在这,但你需要再次过渡才能找到它。

  (对于追求捕获Home键让app退出的读者是一个喜讯,这样可以做到每次Home之后都能再次进入登录界面),在这个过程中没有直接进入HomeActivity,而是WelcomeActivity(有人说不对么,不应该是这样么,在这里不想解释)。

  注意,使用了不同作业栈的Activity,会在最近打开的app显示一个应用会出现2个界面。

  在这里,需要强调一下singleTask+android:taskAffinity不一定必须使用,请依据需求而定,网上有人推荐使用,但我却想说,不要盲目,并不是所有的应用都适合。

  1–> 
 singleTask+android:taskAffinity对于效率而言,优势并不存在,比如设置进程的,但对于带有登录状态的app需要慎用,否则造成信息泄露等问题,开发中只使用singleTask即可。

  2–> 
 singleTask+android:taskAffinity适用于单用户保密性的app(可做到Home之后下次必须登录才能查看信息),建议在这方面试试。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/153258.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java入门第100课——Calendar的getInstance方法

    不知不觉到第100课了,码字真的累,写完后还要反复检查是否有笔误,以免对大家造成困扰。后面还有好多课时,真的是从零基础开始,一直到框架。不知能不能坚持写完,关注的人越多更的越快。最近更的比较快是因为有存货,存货还能撑50课的样子。一天不吃不喝最多也就写10个课时。有点啰嗦了,有什么想法给我留言吧。问题Calendar类是一个抽象类,它为特定瞬间与一组诸如YE…

    2022年4月14日
    111
  • 个人博客网站与工具软件

    个人博客网站与工具软件文章目录个人博客网站张兵个人博客杨雨的个人博客李洋个人博客廖雪峰的官方网站工具类网站工具:Xmind/ProcessOnAscilflow【在线画图】VisualStudioCode印象笔记TyporaMd2All【markdown排版工具】DouTu【表情包在线制作】学习网站极客学院个人博客网站张兵个人博客链接地址张兵一个人的博客;杨雨的个人博客链接地址:杨雨个人博客站;李洋个人博客链接地址:李洋博客;廖雪峰的官方网站链接地址:廖雪峰官博;工具类网站工具:Xmind/Proce

    2022年7月21日
    14
  • 随机梯度下降法概述与实例分析_梯度下降法推导

    随机梯度下降法概述与实例分析_梯度下降法推导机器学习算法中回归算法有很多,例如神经网络回归算法、蚁群回归算法,支持向量机回归算法等,其中也包括本篇文章要讲述的梯度下降算法,本篇文章将主要讲解其基本原理以及基于SparkMLlib进行实例示范,不足之处请多多指教。梯度下降算法包含多种不同的算法,有批量梯度算法,随机梯度算法,折中梯度算法等等。对于随机梯度下降算法而言,它通过不停的判断和选择当前目标下最优的路径,从而能够在最短路径…

    2022年9月10日
    3
  • string或binary数据将被截断_字符串截断错误

    string或binary数据将被截断_字符串截断错误Hibernate:insertintodis_txtfile(delivery,postationid,sn,id)values(?,?,?,?)2012-02-2111:28:53,481[main]WARN org.hibernate.util.JDBCExceptionReporter-SQLError:0,SQLState:220012

    2022年10月7日
    5
  • iphone越狱pp助手源_pp助手越狱版源地址

    iphone越狱pp助手源_pp助手越狱版源地址在为方便大家查看核桃同学分享的每日文章,建议小伙伴们【置顶我们】的公众号哦!进入【米乐科技】公众号,点击右上角打开设置界面,再次右上角选择【置顶/星标】,这样就可以啦!苹果越狱教程篇其实在编辑这篇文章的时候,核桃同学还在纠结是分享实用软件呢,还是先分享玩机技巧。恰好有小伙伴留言说想了解越狱只是,于是乎本文就诞生了。在往期的发布中,苹果机的资源分享的较少。主要是因为苹果手机在官家IOS系统…

    2025年6月29日
    1
  • vue中import作用「建议收藏」

    vue中import作用「建议收藏」html文件中,通过script src = ‘xxx’标签引入js文件。而vue中,通过import xxx from xxx路径 的方式导入文件,不光可以导入js文件。“xxx”指的是为导入的文件起一个名称,不是指导入的文件的名称,相当于变量名。“xxx路径”指的是文件的相对路径.例如:在App.vue中导入index 和 content分别可以写:import…

    2022年6月13日
    48

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号