0

我正在实现一个将在 MainActivity 启动时启动的服务。该服务检查并维护网络连接。

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

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

检查 MainActivity 当前是否打开并在用户面前

如果是调用activity中的一些方法与UI交互

如果没有活动更新,则通知是。

我的问题是;

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

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

4

2 回答 2

2

做不同的事情。

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

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

当然,您也可以直接发布打开 Activity 的通知,但据我了解,您希望提供更顺畅的集成。

于 2013-04-11T12:08:18.033 回答
0

一个想法是让您的服务在有新更新时发送状态栏通知。
实现通知,以便在单击时打开MainActivity.

然后,当用户点击通知时,如果MainActivity已经在运行,则将其置于最前面,否则将启动。
所以这基本上消除了检查MainActivity当前是否在用户面前打开的需要(我认为这是一种不好的做法)。

于 2013-04-11T12:07:31.280 回答