android
Android启动模式是Android开发中非常概念性的主题,很容易弄乱。 您需要了解的android中有4种主要的启动模式:
- 标准
- 单顶
- 单实例
- 单任务
在Android开发人员访谈中,经常会询问启动模式,如果遇到复杂的情况,启动模式可能会很棘手。
大多数讨论都围绕着,如果在启动模式为singleTask的情况下通过ActivityA启动ActivityB会发生什么。 这些问题在讨论android启动模式时非常常见。
要深入了解启动模式,了解Android中的任务至关重要。 如果您在不了解任务的情况下尝试阅读启动模式,那么您将无法全面了解singleInstance和singleTask启动模式。
因此,我将首先讨论android中的任务,然后介绍android中的四种启动模式,以开始本教程。
了解Android中的任务
什么是任务?
引用开发人员文档:
任务是用户在执行特定工作时与之交互的活动的集合。
可以将“任务”视为存储应用程序所有活动的存储桶。 一个任务可以具有多个活动以及同一活动的多个实例。
它基于STACK数据结构,并作为LIFO(“后进先出”)结构运行。 不同的应用程序具有不同的任务,即使应用程序不在前台,任务也可以保留在内存中。
重要的是要注意一个应用程序也可以有多个任务。
任务状态
任务可以处于“后台”状态或“前台”状态。 让我们看一个例子。
假设您有一个包含4个活动的应用程序A,它当前处于前台。 如果按下主页按钮,则整个任务将移至后台。 该任务的所有活动将停止。
然后,打开另一个应用程序B,并在那里打开几个活动。 该应用程序的任务现在处于前台。 在所有这些时间中,A的任务仍在内存中。
当您再次按home键时,B的任务将转到后台,而A的任务将转到前台。 任务A的所有活动均按正确的顺序进行。 如果有任何文本字段,它们还将保留其数据。
这就是任务的工作方式。 这对于了解android启动模式至关重要。 当您对任务有清楚的了解时,它们将变得更有意义。
Android启动模式
标准
这是默认的启动模式。 如果您未指定任何启动模式,则活动将以标准启动模式打开。
这是最简单的。 它只会启动一项活动,而不是另一项活动。 即使该活动已经存在。
例如:
单顶
请记住以下几点:仅活动的单个实例将保留在最前面。
在此android启动模式下:
- 如果活动位于顶部,则不会创建新实例。 而是调用onNewIntent()方法。
- 如果活动不在顶部,那么将创建一个新实例并将其添加到顶部。 就像标准启动模式一样。
单任务
请记住以下几点:任务中只能保留一个活动实例。
如果活动具有SingleTask启动模式,则在首次启动活动时会创建一个新的Task。 并且此活动实例位于根目录。 现在针对两种情况:
在此android启动模式下:
- 如果活动位于顶部,则不会创建新实例。 而是调用onNewIntent()方法。
- 如果Activity的实例已经存在但不是ON TOP ,则它将弹出所有其他活动并调用onNewIntent()方法。
单实例
在单个任务中记住此作为单个实例
在此android启动模式下,就像“单个任务”一样,将创建一个新任务并将活动置于根目录下。 但是此新任务将仅包含该活动实例,而没有其他内容。 如果由此启动了一个新活动,那么它将在单独的任务中完成。
由于只能在一个任务中保留一个实例:
- 如果活动的实例存在于其他任务中,则将为该活动调用onNewIntent()方法。
- 如果新的Activity是从singleInstance活动启动的,则它是在单独的任务中启动的。
一些花絮:
singleTask和singleInstance之间的区别:
在singleTask中,将启动一个新任务,该新任务也可以包含其他活动。
在singleInstance中,将启动一个新Task,并且其中不能包含其他活动。
细微差别:
如果在后台存在活动A声明为singleTask的任务,而前台活动调用活动A,则活动A的整个任务都将放置在活动顶部。
翻译自: https://www.javacodegeeks.com/2020/09/android-launch-modes-and-tasks-explained.html
android