20

我了解不同类型的标志,但无法在我的活动中使用。谁能给我解释一下

  • 我们如何才能完成一项活动?
  • 如何在意图标志的帮助下操作活动堆栈。
4

3 回答 3

31

我们如何才能完成一项活动?

要完成一项活动,您需要手动调用活动的finish() 方法,或者按下本身调用finish() 方法的后退按钮。

我猜您是在询问也可以使用 Intent 标志声明的 Android 启动模式,例如:

1) FLAG_ACTIVITY_NEW_TASK - 如果设置,此活动将成为此历史堆栈上新任务的开始。任务(从启动它的活动到下一个任务活动)定义了用户可以移动到的活动的原子组。任务可以移到前台和后台;特定任务中的所有活动始终保持相同的顺序。

2) FLAG_ACTIVITY_CLEAR_TOP - 如果设置,并且正在启动的 Activity 已经在当前任务中运行,那么不会启动该 Activity 的新实例,而是关闭它之上的所有其他 Activity,并且此 Intent 将被传递到(现在在顶部)作为新意图的旧活动。

3) FLAG_ACTIVITY_SINGLE_TOP - 如果设置,如果活动已经在历史堆栈的顶部运行,则不会启动它。

有关 Intents 的更多信息,请访问Android 开发者网站。

您还可以在此链接中阅读带有示例的详细说明。

如何在 Flags 的帮助下操作活动堆栈。

后台堆栈的操作取决于您的要求,例如,如果您希望在应用程序启动后稍后看到某个活动,那么您可以将其保留在后台堆栈中此外,如果您不想看到明确的屏幕,例如仅调用的启动屏幕导航到其他屏幕时需要完成一次。

于 2013-10-28T04:53:48.863 回答
13

您可以调用finish()您的活动来完成它。根据您的要求,您可以在此时使用一些标志。以下是它们的工作方式:

FLAG_ACTIVITY_CLEAR_TASK- 如果在传递给您的 startActivity() 的任何意图中设置,它将导致与活动相关联的任何现有任务在活动开始之前被清除。也就是说,所有旧的活动都结束了。

FLAG_ACTIVITY_CLEAR_TOP- 如果在传递给您的 startActivity() 的任何意图中设置,并且正在启动的活动已经在当前任务中运行,那么不会启动该活动的新实例,而是在它之上的所有其他活动关闭,此 Intent 将作为新 Intent 交付给旧 Activity。

FLAG_ACTIVITY_NEW_TASK- 如果在传递给您的 startActivity() 的任何意图中设置,此活动将成为此历史堆栈上新任务的开始。

FLAG_ACTIVITY_SINGLE_TOP - 如果在传递给您的 startActivity() 的任何意图中设置,如果该活动已经在历史堆栈的顶部运行,则不会启动该活动。

你可以像这样使用它:

Intent i=new Intent(this, Sample.class);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);

如需进一步说明,您可以查看此Intents以及Back Stack and Tasks

于 2013-10-28T04:57:58.063 回答
0

如果要完成活动,可以从该活动调用方法完成()。

有不同种类的可用于活动的标志:

FLAG_ACTIVITY_NEW_TASK
FLAG_ACTIVITY_CLEAR_TOP
FLAG_ACTIVITY_SINGLE_TOP

然后,您可以将 Intent.FLAG_ACTIVITY_NEW_TASK 用于任何活动 setFlag 方法参数。

更多信息: 任务和回栈活动

希望它可以帮助你。

于 2013-10-28T04:42:11.197 回答