从服务上下文启动活动

时间:2015-08-03 11:03:37

标签: android android-activity android-service

我想从服务上下文开始一个活动。但是我必然会使用flag = Intent.FLAG_ACTIVITY_NEW_TASK来创建活动的多个实例,因为它会抛出其他标志的Run-Time-Exception。 我们如何从服务中启动一个活动,以便不会创建多个活动实例,如果已经在最近的任务中启动它只会启动它?

1 个答案:

答案 0 :(得分:0)

您可以组合使用不同的标记,例如FLAG_ACTIVITY_CLEAR_TOP

  

如果已设置,并且正在启动的活动已在当前任务中运行,则不会启动该活动的新实例,而是将关闭其上的所有其他活动,并将此Intent传递给(现在在最前面)作为新意图的旧活动。

     

...

     

此启动模式也可以与FLAG_ACTIVITY_NEW_TASK结合使用:如果用于启动任务的根活动,它会将该任务的任何当前运行的实例带到前台,然后将其清除到其根目录州。这在从通知管理器启动活动时尤其有用。

FLAG_ACTIVITY_CLEAR_TASK

  

如果在传递给Context.startActivity()的Intent中设置,则此标志将导致在活动开始之前清除与活动关联的任何现有任务。也就是说,活动成为否则为空任务的新根,并且任何旧活动都已完成。这只能与FLAG_ACTIVITY_NEW_TASK一起使用。

使用FLAG_ACTIVITY_NEW_TASK。使用哪一个取决于您想要实现的目标。 检查Intent类和Tasks and Back Stack中的标志文档。