我了解不同类型的标志,但无法在我的活动中使用。谁能给我解释一下
- 我们如何才能完成一项活动?
- 如何在意图标志的帮助下操作活动堆栈。
我了解不同类型的标志,但无法在我的活动中使用。谁能给我解释一下
我们如何才能完成一项活动?
要完成一项活动,您需要手动调用活动的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 的帮助下操作活动堆栈。
后台堆栈的操作取决于您的要求,例如,如果您希望在应用程序启动后稍后看到某个活动,那么您可以将其保留在后台堆栈中此外,如果您不想看到明确的屏幕,例如仅调用的启动屏幕导航到其他屏幕时需要完成一次。
您可以调用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