从活动更改服务中的整数

时间:2012-01-15 14:00:04

标签: android android-service android-activity

我需要能够使用活动在服务运行时更改服务中的Integer值。 我该如何实现呢? 任何帮助或建议表示赞赏。

2 个答案:

答案 0 :(得分:1)

您可以做的一件事是在您的服务中添加一个广播接收器,您可以通过活动与之通信。

以下是沟通:

  • 从活动中发送广播

  • 让您的BroadcastReceiver(可能在您的服务中)收听 这个广播来自您的活动,当它收到它时,只是 更新服务中的成员变量。

答案 1 :(得分:0)

假设你有一个服务,你已经开始使用startService()从你的客户端在后台做一些工作(例如开始导航)更长的时间,然后客户想要改变操作以某种方式提供服务(例如使用gps)。然后我建议你也可以绑定到服务(即可以启动服务并绑定到它)。

绑定到服务是获取对服务的强大API的默认方式。而且,创建本地服务(如果客户端和服务在同一个进程中运行)非常简单。

http://developer.android.com/guide/topics/fundamentals/bound-services.html#Binder

(第二种方法是使用新参数再次调用startService,但如果这比绑定到服务更好取决于实际用例。)

使用意图创建一个简单的API更容易出错,并且你不知道服务是否在中间调用之间被杀死(在内存不足的情况下),因为除非你绑定,否则不会通知客户端服务状态它。并且,与往常一样,无法保证启动的服务将永远运行。假设您的服务将被杀死;这只需要花多长时间。