通知服务的活动

我试图从我的Activity开始一个Service ,寻找在网页上的变化,这是一个私人的应用程序,所以我不打扰电池寿命…

但我想从我的Service传递数据到我的Activity …我似乎无法find一种方法来从我的Service调用Activity 。 我怎样才能做到这一点?

正如亚历克斯指出的,你可以绑定到服务,并通过某种监听器或callback服务使用事件。

或者,您可以使用广播Intent ,也许使用Intent上的setPackage()方法来限制广播的范围。

或者,您可以使用createPendingResult()创build一个PendingIntent ,将其作为额外的Intent传递给服务 – 服务可以使用该PendingIntent在您的活动中触发onActivityResult()

或者,您可以使用ResultReceiver

或者,您可以使用Messenger

(诚​​然,我没有尝试后两种方法,但我认为他们会在这里工作)

还有一种select:如果您的服务更新了内容提供者,则可以通过ContentObserver通知活动。 如果你的服务从服务器下载了一些数据,而你只是想在活动中显示新的内容,这就足够了。

一些丑陋的方式:

1.)如果活动尚未开始,则使用intentstartActivity ,但记住intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

2.)否则,如果活动已经开始,您可以在活动中编写自己的callback方法,并在服务中注册方法,然后直接调用服务中的方法。

希望find一些聪明的方法。

我觉得广播也很好,你可以写一个静态的内部类来接收广播和启动活动。 但我认为这也是丑陋的。

ResultReceiver机制已经在另一篇文章中解释过了: – Restful API服务但是在任何情况下都不行。 请参阅我对该post的评论。 有限的范围广播或PendingIntent机制似乎更合适。