Activity是android应用程序中比较重要的一个组件,Activity的生命周期网上也有很多的,讲解的也很到位和精彩,自己在学习Activity的启动模式时,在网上看了很多人的博客还是感觉没有弄明白,经过多次看大牛的博客和自己敲代码实现各种启动模式下的Activity的实例,自己也算清楚了点。现在分享下自己的理解Activity的启动模式。 Android的系统中Activity的启动模式有4种,分别是 1.standard 2.singleTop 3.singleTask 4.singleInstance Activity的启动模式在Activity的跳转(startActivity(Intent))中有着很特殊的作用,它决定这这次启动Activity是否要生成新的实例, 是否重用已经存在的Activity实例,是否和其它Activity公用一个Task,或者是否重新生成一个新的的Task。 上面说道Task,为了弄清楚Activity的launch模式,首先先来了解下,Task和Activity的区别和联系: Task是一个类似于数据结构中的栈的实例,一个Task可以放置多个Activity的实例,Task管理Activity的创建和销毁,或者可以理解为Task是一个Activity的容器。默认情况下,当一个应用程序启动,会创建一个以之对应的Task来管理Activity实例,一个Activity启动另外一个Activity是,默认情况下(singleInstance除外),2个Activity是放在用一个Task中,新启动的Activity被压入启动Activity的Task栈中,单用户点击back键后,新Activity从Task栈中出栈,开始的Activity就处在栈顶,显示在屏幕上。注意: Task和Task之间是相互独立的,当一个程序运行时,点击home键,然后在去启动另外一个应用程序,整个过程中Task来回切换,开始的Task被转移到后台(任然保留这Task里面的所有Activity),新启动的Task被移到前台,当再次点击Home键时,重新启动先前的应用程序,2个Task在前台和后台相互切换。Task保存了所有的Activity实例。说这么多,实际上Task就是Activity的管理的一个栈。不同的启动模式,对应这不同的管理方式。 接下来正式进入Activity的启动模式详解 Activity的启动模式在manifest文件中注册,<activity>标签中注册。 1. standard 这种方式是Activity的默认启动方式,可以在manifest文件中注册和不注册。 这种启动方式是最简单的,也是采用最多的。 下面的代码是FirstActivity的standard的启动模式。
下面代码是FirstActivity的布局文件
manifest文件中未对FirstActivity的注册启动模式,默认是Standard 接下里的图片是运行程序后的得到实例,通过观察Activity的实例来分析Activity的启动模式,如下图: 我们注意到都是FirstActivity的实例,但序列号不同,并且我们需要连续按后退键两次,才能回到第一个FristActivity。standard模式的原理如下图所示: 如图所示,每次跳转系统都会在task中生成一个新的FirstActivity实例,并且放于栈结构的顶部,当我们按下后退键时,才能看到原来的FirstActivity实例。 这就是standard启动模式,不管有没有已存在的实例,都生成新的实例。 本来计划一篇全部写完Activity的启动模式,不知不觉中快1点了,明天还要上班,就先到这把。明天有空,我续上。 |
Activity的4种启动模式
最新推荐文章于 2021-05-25 18:37:43 发布