android_Android启动模式和任务介绍

android

android

Android启动模式是Android开发中非常概念性的主题,很容易弄乱。 您需要了解的android中有4种主要的启动模式:

  1. 标准
  2. 单顶
  3. 单实例
  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启动模式下:

  1. 如果活动位于顶部,则不会创建新实例。 而是调用onNewIntent()方法。
  2. 如果活动不在顶部,那么将创建一个新实例并将其添加到顶部。 就像标准启动模式一样。

单任务

请记住以下几点:任务中只能保留一个活动实例。

如果活动具有SingleTask启动模式,则在首次启动活动时会创建一个新的Task。 并且此活动实例位于根目录。 现在针对两种情况:

在此android启动模式下:

  1. 如果活动位于顶部,则不会创建新实例。 而是调用onNewIntent()方法。
  2. 如果Activity的实例已经存在但不是ON TOP ,则它将弹出所有其他活动并调用onNewIntent()方法。

单实例

在单个任务中记住此作为单个实例

在此android启动模式下,就像“单个任务”一样,将创建一个新任务并将活动置于根目录下。 但是此新任务将包含该活动实例,而没有其他内容。 如果由此启动了一个新活动,那么它将在单独的任务中完成。

由于只能在一个任务中保留一个实例:

  1. 如果活动的实例存在于其他任务中,则将为该活动调用onNewIntent()方法。
  2. 如果新的Activity是从singleInstance活动启动的,则它是在单独的任务中启动的。

一些花絮:

singleTask和singleInstance之间的区别:

在singleTask中,将启动一个新任务,该新任务也可以包含其他活动。

在singleInstance中,将启动一个新Task,并且其中不能包含其他活动。

细微差别:

如果在后台存在活动A声明为singleTask的任务,而前台活动调用活动A,则活动A的整个任务都将放置在活动顶部。

来源:https://developer.android.com/guide/components/activities/tasks-and-back-stack

翻译自: https://www.javacodegeeks.com/2020/09/android-launch-modes-and-tasks-explained.html

android

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值