android面试十大技巧(Android面试每日一题之网易篇)
android面试十大技巧(Android面试每日一题之网易篇)如果某个Activity自己激活自己,即任务栈栈顶就是该Activity,则不需要创建,而会调用其onNewIntent方法。其余情况都要创建Activity实例;第二种模式是:singleTop回答:第一种模式是:standard(默认模式)每次激活Activity时(startActivity),都创建Activity实例,可以有相同的Activity实例,并放入任务栈;
Android四种启动模式一、启动模式介绍
启动模式简单地说就是Activity启动时的策略,在AndroidManifest.xml中的标签的android:launchMode属性设置;
启动模式有4种,分别为standard、singleTop、singleTask、singleInstance;
在开始之前,我说一个重点,大家回答面试官的问题一定要有逻辑性,而且麻烦把英文读音读对!!麻烦把英文读音读对!!麻烦把英文读音读对!!重要的事情说三遍。保证给面试官一个这货英语还可以的错觉!
回答:
第一种模式是:standard(默认模式)
每次激活Activity时(startActivity),都创建Activity实例,可以有相同的Activity实例,并放入任务栈;
第二种模式是:singleTop
如果某个Activity自己激活自己,即任务栈栈顶就是该Activity,则不需要创建,而会调用其onNewIntent方法。其余情况都要创建Activity实例;
第三种模式是:singleTask
只有一个实例。在同一个应用程序中启动他的时候,若Activity不存在,则会在当前task创建一个新的实例,若存在,则会把task中在其之上的其它Activity destory掉并调用它的onNewIntent方法。
如果是在别的应用程序中启动它,则会新建一个task,并在该task中启动这个Activity,singleTask允许别的Activity与其在一个task中共存,也就是说,如果我在这个singleTask的实例中再打开新的Activity,这个新的Activity还是会在singleTask的实例的task中。
若是别的应用程序打开SingleTask的Activity 我们设置为C1,则会新启一个task。
如别的应用Other中有一个activity,taskId为200,从它打开C2,则C2的taskIdI不会为200,例如C2的taskId为201,那么再从C2打开C1、C3,则C2、C3的taskId仍为201。
注意:如果此时你点击home,然后再打开Other,发现这时显示的肯定会是Other应用中的内容,而不会是我们应用中的C1 C2 C3中的其中一个。
第四种模式是:SingleInstance
只有一个实例,并且这个实例独立运行在一个task中,这个task只有这个实例,不允许有别的Activity存在。
例子:在一个新栈中创建该Acitivity实例,并让多个应用共享该栈中的该Activity实例,一旦该模式的Activity的实例存在于某个栈中,任何应用在激活该Activity时都会重用该栈中的实例,其效果相当于在多个应用程序共享一个应用,不管谁激活该activity都会进入同一个应用中。
总结:不知道打了这么多大家清楚了没,反正大家面试的时候就说哪四种模式。每种模式的特点,最好是能举个例子。如果你们需要举例子的话。就下面评论一下,我编辑一下把例子给写上。我还是觉得大家如果找工作还是动手试一下比较好。其实我只是知识的搬运工,侵删。谢谢!!
另外,本来说每日一题的,但是我实在是太懒了。想想还是得做下去啊,用网上的一句话说:
干我们这行,啥时候懈怠,就意味着长进的停止,长进的停止就意味着被淘汰,只能往前冲,直到凤凰涅槃的一天!任何一行都是这样啊!
最近知乎比较火的蘑菇街的教程 我有~嗯,谢谢大家!