如何在安卓中使用Intent标志?

19

我知道意图(Intent)中不同类型的标志(flags),但无法在我的活动中使用。有人能解释一下吗?

  • 我们如何交替地完成一个活动?
  • 如何使用意图标志(intent flags)来操作活动堆栈(activity stack)。

1
你所说的操作活动栈是什么意思? - Lavanya
这句话的意思是,我们可以通过使用标志来移动或使用堆栈中的不同活动。 - jyomin
1
你有在这里检查吗?http://developer.android.com/reference/android/content/Intent.html - GrIsHu
2个回答

15

您可以在活动中调用finish()来结束它。

根据您的需求,有一些标志可以在此时使用。

以下是它们的工作原理,引用自Android关于Intent的文档

FLAG_ACTIVITY_CLEAR_TASK

如果设置了任何要传递给您的startActivity()的意图(Intent),那么在启动Activity之前,与该Activity相关联的任何现有任务都将被清除。也就是说,所有旧的Activities都会被结束。

FLAG_ACTIVITY_CLEAR_TOP

如果在传递给startActivity()的任何意图(Intent)中设置了此标志,并且正在当前任务中运行要启动的Activity,则不会启动该Activity的新实例,而是关闭其顶部的所有其他Activities,并将此意图(Intent)作为新的意图(Intent)传递给旧的Activity。

FLAG_ACTIVITY_NEW_TASK

如果在传递给startActivity()的任何意图(Intent)中设置了此标志,则该Activity将成为此历史堆栈上新任务的开始。

FLAG_ACTIVITY_SINGLE_TOP

如果在传递给startActivity()的任何意图(Intent)中设置了此标志,并且该Activity已经运行在历史堆栈的顶部,则不会启动该Activity。

您可以像这样使用它:

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

如需进一步澄清,您还可以查看Back Stack和Tasks


0

如果您想结束当前活动,可以从该活动调用finish()方法。

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

FLAG_ACTIVITY_NEW_TASK
FLAG_ACTIVITY_CLEAR_TOP
FLAG_ACTIVITY_SINGLE_TOP

你可以使用Intent.FLAG_ACTIVITY_NEW_TASK和setFlag方法参数来为任何活动设置标志。

更多信息请参见: 任务和返回堆栈活动

希望这能对你有所帮助。


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