Andorid 开发艺术探索笔记(2),安卓面试题及答案2020

<关于Activity的LaaunchMode>

因为一个应用里多次启动同一个Activity会重复创建,所以Andorid提供了四种启动模式

  1. standard:标准模式

每次启动一个Activity都会重新创建,不管这个Activity的实例是否已经存在。创建的Activity生命周期和常规的一样。这是一种典型的多实例实现,一个任务栈可以有多个实例,每个实例也可以属于不同的任务栈,比如A启动了B,那么这个B的实例是属于A的任务栈, C也可以启动B,那么这个B的实例是属于C所在的任务栈的。

这里注意,非Activity的Context(如ApplictationContext)是没有任务栈的,所以用之去启动standard模式会报错,解决方法使为待启动的Activity指定FLAG_ACTIVITY_NEW_TASK,为其创建一个任务栈。

  1. singleTop:栈顶复用模式

这种模式下如果Activity已经位于栈顶则这个Activity不会重新创建,同时它的onNewIntent方法会被调用,通过此方法的参数我们可以取得当前的请求信息。如果新的Activity不是位于栈顶,那么它就会重新被创建。如果目前的栈为ABCD,模式为standard,要创建一个D,则栈变为ABCDD,如果为singleTop则为ABCD。

  1. singleTask:栈内复用模式

这是一种单实例模式。Activity启动时要先查找栈里面是否有实例,如果有则将其调为栈顶,不创建新的实例,如果不存在则创建新的实例压入栈中。

①S1栈中Activity为ABC,想启动D,则创建实例压栈,S1变为ABCD。

②S1栈中为ABC,但D想要的栈为S2,S2不存在,所以S2和D同时创建并将D压入S2栈中。

③S1栈中为ABCD,想在S1中启动B,则将CD出栈,S1栈中变成AB。

(以上均在singTask模式下进行)

  1. singleInstance:单实例模式。

是一种加强的singleTask模式,所以它具有singleTask模式的功能,还加强了一点,就是此种模式的Activity只能单独的位于一个任务栈。Activity A这种模式下只能单独的位于栈S1中,Activity B只能单独的位于栈S2中。

最后

文章所有资料全部已经打包整理好,免费分享给有需要的人,另外小编手头上整理了大量Android架构师全套学习资料,Android核心高级技术PDF文档+全套高级学习资料+视频+2021 BAT 大厂面试真题解析,都是免费分享给大家的,全部都已整理在GitHub上,有需要的朋友可以点击前往领取更多。

资料展示:

Andorid 开发艺术探索笔记(2),安卓面试题及答案2020_第1张图片

Andorid 开发艺术探索笔记(2),安卓面试题及答案2020_第2张图片

Andorid 开发艺术探索笔记(2),安卓面试题及答案2020_第3张图片

485277)]

[外链图片转存中…(img-vak1fIuq-1645091485277)]

Andorid 开发艺术探索笔记(2),安卓面试题及答案2020_第4张图片

你可能感兴趣的:(程序员,面试,移动开发,android)