为什么使用启动活动?

18

我一直在研究API文档,注意到从API级别16开始,Context类包含以下方法:

public abstract void startActivities (Intent[] intents)

我已经通过Google搜索来寻找这个方法在应用程序代码中的使用示例、问题或文章,但是目前还没有找到。如果有人已经提出了类似的问题,请告诉我。

无论如何,我很好奇什么时候应该/可以在应用程序代码中使用它,以及这样做的任何好处(如果有的话)是什么?我个人从未见过这种方法的使用,并且我不能理解它的实用性。我们将不胜感激地接受任何反馈。

3个回答

23

这在应用程序代码中很少使用。我本来想说永远不会使用,但是我不是那么确定;)

然而,当启动一个新任务时,它可以用于创建一个合成后退栈。您希望有一个预制的后退栈,以便后退键在此任务中按层次结构方式导航。

奇怪的是,它在ContextCompat的文档中解释得更好,而不是在Context本身中。

如果可以,请将一组活动作为合成任务堆栈启动。

在API级别11(Android 3.0/Honeycomb)中,使用后退键进行应用程序导航的推荐约定发生了变化。后退键的行为局限于当前任务,并且无法捕获跨不同任务的导航。通过软件提供的导航或系统栏上的“最近使用”UI,可以跨任务导航并轻松到达先前的任务。对于旧硬件按钮配置的设备,可以通过长按主页键访问最近使用的UI。

在过渡从一个任务堆栈到另一个任务堆栈后Android 3.0之后,应用程序应为新任务合成一个后退栈/历史记录,以便用户可以通过重复按下后退键从新任务导航出来并返回启动器。后退键不应跨任务堆栈导航。

startActivities提供了一种构建多个活动的合成任务栈的机制。如果系统中没有可用的底层API,则此方法将返回false。


2
只是添加这个作为一个注释,以备潜在的更新,但添加一个关于深度链接的更新(为深度链接合成一个新的返回栈):https://developer.android.com/training/implementing-navigation/temporal.html - Submersed
它还可以用于开发深藏在应用程序中的一小段应用程序代码。 - JohnnyLambada

1

我自己从未使用过,但我认为当您想要重新创建活动堆栈以启动新的任务时,它非常有用。例如,当您的应用程序从通知中启动时,系统不会使用现有任务来运行您的应用程序,而是默认情况下创建一个新任务,并将您的应用程序放在其中。在这种情况下,您可能希望从您的活动堆栈的某个特定位置开始,并且通过此方法,您可以一次调用所有活动。


0

我已经使用过这个方法。在某些特定情况下,当我创建新的活动时,我会清除任务栈。但是当我回到已经在任务栈中清除的活动时,我会使用 startActivities() 来创建一个人工任务栈。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接