有关服务,活动和通知之间交互的建议

时间:2013-04-11 12:01:44

标签: android service android-activity

我正在实施一项服务,该服务将在MainActivity启动时启动。该服务检查并维护网络连接。

我没有将服务绑定到Activity,因为即使活动不可用,我也希望服务继续运行。服务将从与其连接的服务器接收消息。

当服务收到消息时,我很难选择最佳逻辑来执行以下操作。

检查MainActivity当前是否已打开且位于用户面前

如果调用活动中的某些方法与UI进行交互

如果没有活动更新通知。

我的问题是;

如何从我的服务中正确检查活动是否在UI中运行?我知道我可以绑定服务,但如果活动关闭,我不想解除绑定。这会有问题吗?

我将以某种方式需要从服务向活动发送消息。鉴于上述情况,最好的方法是什么?

2 个答案:

答案 0 :(得分:2)

以不同的方式做。

  • 如果您的服务不在与您的活动分开的进程中运行,那么您的服务可以通过子查询Application对象提供同步(多线程安全)消息列表,您的活动可以在其中查看它了。但是,如果轮询发生在某些其他事件上,这只会是最好的。

  • 如果您希望将消息“推送”到您的活动,您的活动应该在发现它运行时注册您的服务,而不是相反。在这种情况下,您的Activity应该实现一个接口,通过该接口,服务可以以线程安全的方式通知您的活动新消息。

当然,您也可以直截了当地发布打开活动的通知,但据我所知,您希望提供更顺畅的集成。

答案 1 :(得分:0)

一个想法是让您的服务在新的更新可用时发送状态栏通知 实施通知,以便在点击时打开MainActivity

然后,当用户点击通知时,如果MainActivity已经运行,那么它将被带到前面,否则它将被启动。
所以这基本上不需要检查用户面前当前是否打开MainActivity(我认为这是一种不好的做法)。