阅读:5058回复:1

Android Activity和AMS系列(一)

楼主#
更多 发布于:2020-03-31 19:22
Activity可以说是安卓最常用的一个组件,下面我和大家一起来了解他的来龙去脉。
本文原始资料来自于查阅相关博客和源代码的整理归纳总结得来。

1.Activity生命周期(LifeCircle)

完整的生命周期如下图:

图片:Activity生命周期.png




其中
可见生命周期(Visible lifetime):(onStart() --> onStop())
前台生命周期(Foreground lifetime):(onResume()--> onPause())


1.Activity的Task(Back Stack)和启动模式(Lunch Mode)


Activity依次启动后,一般来讲,新启动的activity会覆盖到上一个启动的activity之上,当我们按下返回键时,当前的activity会消失,上一个activity会重新浮现出来。这个activity列表保存在一个栈(Task)中,因为刚好符合需求,先启动的在底下,后启动的在顶上(先进后出),这个保存activity的task也叫作Back Stack。

图片:ActivityTask_看图王.png




也不是所有的情况都是向上面说的那样,在Activity启动的时候,我们可以设置启动模式(Launch Mode),来设置保存或者创建的策略,主要有以下几种模式选择:

standard(the default mode):
            每启动一个新的Activity,都会创建一个新的实例,Activity A启动的ActivityB,那么B就在A的Task栈里面。
singleTop:
            如果启动的Activity已经在栈顶,则不会再创建实例。onCreateonStart不会被系统调用,但是它的onNewIntent会被回调。
singleTask:
            只要启动的Activity在栈里面,则不会再创建实例,并且这个Activity之上的所有Activity全部出栈,如果没有在栈里面,则创建实例
singleInstance:
            这种模式是为了不同的APP能共享Activity,启动的Activity会在一个单独的Back Stack中,并保证不再有其他Activity实例进入,也是说这个Back Stack只有这一个Activity。

图片:Activity Launch mode.png





在列一个例子,这种情况要注意看图:

图片:singleTask.png

最新喜欢:

NiocoNioco jay30219jay302... zhaoyf13zhaoyf...
If you have nothing to lose, then you can do anything.
沙发#
发布于:2020-04-01 10:02
[url]http://190.lsal.cn/195/1329.gif?0728100424873[/url]
游客

返回顶部