我知道意图(Intent)中不同类型的标志(flags),但无法在我的活动中使用。有人能解释一下吗?
- 我们如何交替地完成一个活动?
- 如何使用意图标志(intent flags)来操作活动堆栈(activity stack)。
我知道意图(Intent)中不同类型的标志(flags),但无法在我的活动中使用。有人能解释一下吗?
您可以在活动中调用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