我需要能够使用活动在服务运行时更改服务中的Integer值。 我该如何实现呢? 任何帮助或建议表示赞赏。
答案 0 :(得分:1)
您可以做的一件事是在您的服务中添加一个广播接收器,您可以通过活动与之通信。
以下是沟通:
从活动中发送广播
让您的BroadcastReceiver(可能在您的服务中)收听 这个广播来自您的活动,当它收到它时,只是 更新服务中的成员变量。
答案 1 :(得分:0)
假设你有一个服务,你已经开始使用startService()从你的客户端在后台做一些工作(例如开始导航)更长的时间,然后客户想要改变操作以某种方式提供服务(例如使用gps)。然后我建议你也可以绑定到服务(即可以启动服务并绑定到它)。
绑定到服务是获取对服务的强大API的默认方式。而且,创建本地服务(如果客户端和服务在同一个进程中运行)非常简单。
http://developer.android.com/guide/topics/fundamentals/bound-services.html#Binder
(第二种方法是使用新参数再次调用startService,但如果这比绑定到服务更好取决于实际用例。)
使用意图创建一个简单的API更容易出错,并且你不知道服务是否在中间调用之间被杀死(在内存不足的情况下),因为除非你绑定,否则不会通知客户端服务状态它。并且,与往常一样,无法保证启动的服务将永远运行。假设您的服务将被杀死;这只需要花多长时间。