为什么我需要一项服务来在后台获取位置更新

时间:2016-06-27 14:45:34

标签: android android-service android-gps

更新

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

这不能回答我的问题。

假设我从我的活动中拨打return tb.OrderByDescending(x => x.Name.Length).ThenByDescending(x => x.Name).ToList(); ,过了一会儿我的活动被销毁了。

locationManager.requestLocationUpdates如何知道我的活动被破坏了,它不应再调用听众了?

从服务注册的方式与注册活动的方式不同?

原始问题

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

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

服务有何帮助?

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

LocationManager

所以没有什么能真正“绑定”服务的位置更新。

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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

服务在后台运行,通常也在不同的线程中运行。如果您的活动被移动,那么它将被销毁,您将无法获得位置更新。该服务将在后台运行,您将收到更新通知。

答案 2 :(得分:0)

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

我认为你正在做活动中的所有事情,这就是为什么你不能与众不同的原因。