从服务中的对象实例启动活动/发送意图

时间:2011-11-23 13:02:44

标签: android object service android-intent

我有以下情况:服务正在我的应用程序的后台运行,并定期接收UDP数据包。它使用我的HandleMessageAgent类的实例来分析每条消息,并在必要时开始新的活动。

我想执行以下任务:无论前面是哪个活动(只要服务正在运行),我想在某些情况下通知用户有关传入消息的信息。我还需要定期更新信息,只要它有效。之后它应该自动关闭。

起初我考虑使用Dialog,但我认为当活动不可见时我无法使用它。因此我决定使用一个活动,因为它可以始终从服务开始。

我想在HandleMessageAgent对象(在方法中)中启动活动。我的问题是,我不知道如何定义一个Intent来在一个对象中启动一个活动,因为Context对我来说并不清楚。

有更优雅的方式来执行此任务吗?或者任何人都可以帮助我从服务中的对象方法启动活动?谢谢!

2 个答案:

答案 0 :(得分:0)

有两种情况需要考虑:

  1. 当您的服务需要通知用户您的活动未激活时,因为某些其他应用处于活动状态。在这种情况下,您应该通过系统首选方式通知用户:Android通知。如果用户正在使用其他应用程序,则不应强制显示对话框或活动。这就是通知的用途。

  2. 如果您的某个活动处于活动状态(无论哪个活动),那么您的服务应该发送广播,感兴趣的活动应该听取并采取行动。这样,您的服务将不依赖于特定活动,并且无需在必须显示通知时跟踪哪些活动处于活动状态。

答案 1 :(得分:0)

您可以将对象设为Parcelable并将其添加到将启动Activity的Intent中。 或者您可以将它放在Application的子类中,因为该实例在您的活动和服务之间共享(只要它们在同一个进程中)

您可能需要“意图”上的“START_NEW_TASK”标志