如何在android中使用Intent Flags?

时间:2013-10-28 04:07:13

标签: android android-intent android-activity

我在意图中了解不同类型的标志但无法在我的活动中使用。任何人都可以解释我,

  • 我们怎样才能完成一项活动呢?
  • 如何借助意图标记操纵活动堆栈。

3 个答案:

答案 0 :(得分:21)

我们如何完成某项活动?或者

要完成一项活动,您需要手动调用finish()活动方法或按回按钮,该按钮本身调用finish()方法。

我想你问的Android启动模式也可以使用Intent标志声明,例如:

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

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

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

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

此外,您可以阅读此link中的示例的详细说明。

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

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

答案 1 :(得分:8)

您可以在活动中致电finish()以完成此操作。 根据您的要求,您可以在此时使用标志。以下是它们的工作原理:

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

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

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

答案 2 :(得分:0)

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

活动有不同种类的标志:

FLAG_ACTIVITY_NEW_TASK
FLAG_ACTIVITY_CLEAR_TOP
FLAG_ACTIVITY_SINGLE_TOP

您可以使用Intent.FLAG_ACTIVITY_NEW_TASK获取任何活动setFlag方法参数。

更多: Tasks and Back StacksActivities

希望它可以帮助你。