-1

更新

我得到的所有答案都说“因为服务在后台运行”。

这不能回答我的问题。

假设我locationManager.requestLocationUpdates从我的活动中调用,一段时间后我的活动被破坏了。

怎么locationManager知道我的活动被破坏了,它不应该再调用监听器了?

从服务注册与从活动注册有何不同?

原来的问题

我的 Android 应用即使在后台也需要获取位置更新。

SO中的规范答案通常是为此创建服务。

服务如何提供帮助?

要创建LocationManager并注册更新,我使用应用程序的上下文,例如:

mLocationManager = (LocationManager) getApplicationContext().getSystemService(Context.LOCATION_SERVICE);
mlocationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 4000, 0, listener);

因此,没有什么能真正将位置更新“绑定”到服务。

从活动注册位置更新与从服务注册有什么区别?

4

3 回答 3

1

因为服务一直在后台运行。另一方面,Activity 只是一个 UI,它依赖于用户操作(屏幕旋转、最小化应用程序等(请参阅 Activity 生命周期))。您还可以绑定到 Service 并像普通对象一样调用方法(绑定后)。如果您绑定并启动服务,您可以确定它现在会丢失任何数据

于 2016-06-27T14:47:55.047 回答
0

关键是您设置了位置侦听器并请求服务中的更新。这样做,监听器总是在运行。然后,当您打开活动时,您可以绑定服务并读取服务存储的位置。

我认为您正在做活动中的所有事情,这就是为什么您不会理解差异的原因。

于 2016-06-27T15:03:04.853 回答
0

Service runs in the background, usually also in different thread. If your activity is moved background it is destroyed, you would not get locations updates. The service will be running in the background, and you will be informed of updates.

于 2016-06-27T14:47:38.747 回答