通知服务的活动
我试图从我的Activity
开始一个Service
,寻找在网页上的变化,这是一个私人的应用程序,所以我不打扰电池寿命…
但我想从我的Service
传递数据到我的Activity
…我似乎无法find一种方法来从我的Service
调用Activity
。 我怎样才能做到这一点?
正如亚历克斯指出的,你可以绑定到服务,并通过某种监听器或callback服务使用事件。
或者,您可以使用广播Intent
,也许使用Intent
上的setPackage()
方法来限制广播的范围。
或者,您可以使用createPendingResult()
创build一个PendingIntent
,将其作为额外的Intent
传递给服务 – 服务可以使用该PendingIntent
在您的活动中触发onActivityResult()
。
或者,您可以使用ResultReceiver
。
或者,您可以使用Messenger
。
(诚然,我没有尝试后两种方法,但我认为他们会在这里工作)
还有一种select:如果您的服务更新了内容提供者,则可以通过ContentObserver通知活动。 如果你的服务从服务器下载了一些数据,而你只是想在活动中显示新的内容,这就足够了。
一些丑陋的方式:
1.)如果活动尚未开始,则使用intent
和startActivity
,但记住intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
2.)否则,如果活动已经开始,您可以在活动中编写自己的callback方法,并在服务中注册方法,然后直接调用服务中的方法。
希望find一些聪明的方法。
我觉得广播也很好,你可以写一个静态的内部类来接收广播和启动活动。 但我认为这也是丑陋的。
ResultReceiver机制已经在另一篇文章中解释过了: – Restful API服务但是在任何情况下都不行。 请参阅我对该post的评论。 有限的范围广播或PendingIntent机制似乎更合适。