2017-02-11 143 views
1

在我的应用程序中,我需要定期请求位置更新,我检查活动中的设置,然后使用LocationServices.FusedLocationApi请求前台服务中的位置。 如何将活动中的LocationRequest对象传递给服务?如何将LocationRequest对象从活动传递给服务?

编辑1:服务从活动和绑定开始。但我无法理解如何传递这个对象。

求助:我想我已经解决了。我已经正确地实现了绑定,然后我发现了这个答案:[1] How to send an object from one Android Activity to another using Intents? 我在服务中获取Parceable时产生了noob错误,这导致了一个NullPointer,但我解决了它。所以我一直在寻找解决的办法是: 使用Parceable(和正确地实现它;))

注意阅读本邻省评论:

谷歌建议不传递任何额外的参数,以服务使用意图,它可能不会在服务端看到,因为多个组件可以绑定到服务,并且onBind()不会总是被调用。

+0

请参阅如何使用活动绑定服务 –

+0

感谢您的答复。 我忘记提及我的服务已开始并且与活动相关联。 我将编辑原始帖子。 – filb

回答

0

Maybe you should study this

您将能够了解如何结合和比服务(涉及传球对象也)进行通信。

关于你的编辑问题扩展答案:

系统调用服务的onBind()方法返回的IBinder当客户端(你的活动)使用bindService()方法结合。调用者(您的活动)使用这个从onBind()返回的实例,可以访问该服务的公共方法。你可以有一个公共方法将用于向它发送参数/对象。

您可以进一步参考Google文档Here

+0

感谢您的回复。我忘了提及我的服务已经开始并且与活动相关联。我将编辑原始帖子。 – filb

+0

如果您刚刚接触过Android和开发,那么我会建议您不要在不需要使用_EventBus_的地方使用,因为在某些情况下,您可能会过度使用_EventBus_,并且代码可能无法正常工作。将来尝试了解您的代码会给您带来困难。 –

+0

谢谢Shoaib,我想我已经解决了。我已正确实施绑定,然后我发现这个答案:http://stackoverflow.com/questions/2139134/how-to-send-an-object-from-one-android-activity-to-another-using-意图?rq = 1 我在一个noob错误获取Parceable的服务,这导致了一个空指针,但我已经解决了它。 所以我寻找的解决方案是:使用Parceable(并正确实施;)) – filb

0

其中一个解决方案是EventBus库。 你可以从任何地方广播一个对象,并在你想要的任何线程上订阅该对象。例如在onStartCommand

EventBus.getDefault().register(this); 

: 你可以注册并与这条线结合后订阅该事件。

和注销(取消)中的onDestroy

EventBus.getDefault().unregister(this); 
相关问题