我在意图中了解不同类型的标志但无法在我的活动中使用。任何人都可以解释我,
答案 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 Stacks和 Activities
希望它可以帮助你。