今天我正在学习Intents并将活动绑定到服务,我发现将数据从服务传输到活动非常容易和很好。我想测试一个可以启动服务的活动,这个服务会调用网页来获取一些数据。我将活动绑定到服务,以便活动可以调用服务方法然后烘焙结果。在服务方法中,我调用网页并返回数据。当我测试它时,我得到一个空指针异常,我很确定我没有以正确的方式做,有没有人有任何建议如何正确实现这一点。
答案 0 :(得分:1)
您在这里处理一些相当可靠的线程同步问题。注册某种监听器范例会更好,这样您就可以将Activity注册为服务正在生成的数据的监听器。按照目前的情况,您的服务和活动之间根本没有同步,导致活动尝试在服务准备好之前从服务中获取结果。有很多资源在讨论监听器模式或观察者模式。
我应该注意,我不知道你的服务是否真的正确地解决了问题。我只是看着你们之间的沟通。
答案 1 :(得分:0)
从服务返回结果时,最好在您的活动中实现 ResultReceiver 接口,并通过putExtra将接收者对象传递给服务。在您的服务中获取接收器对象并调用 receiver.send()函数以在Bundle中发送任何内容。 [我至少在 IntentService 中测试了这种模式]。
修改:查看this帖子以获取完整实施。