我得到的所有答案都说“因为服务在后台运行”。
这不能回答我的问题。
假设我从我的活动中拨打return tb.OrderByDescending(x => x.Name.Length).ThenByDescending(x => x.Name).ToList();
,过了一会儿我的活动被销毁了。
locationManager.requestLocationUpdates
如何知道我的活动被破坏了,它不应再调用听众了?
从服务注册的方式与注册活动的方式不同?
我的Android应用即使在后台也需要获取位置更新。
SO中的规范答案通常是为此创建服务。
服务有何帮助?
要创建locationManager
并注册更新,我会使用应用的上下文,例如:
LocationManager
所以没有什么能真正“绑定”服务的位置更新。
从活动注册位置更新而不是从服务注册有什么区别?
答案 0 :(得分:1)
因为服务始终在后台运行。另一方面,Activity只是一个UI,它取决于用户操作(屏幕旋转,最小化应用程序等)(请参阅活动生命周期)。您还可以绑定到Service并调用普通对象的方法(绑定后)。如果你绑定并启动服务,你可以确定它现在会遗漏任何数据
答案 1 :(得分:0)
服务在后台运行,通常也在不同的线程中运行。如果您的活动被移动,那么它将被销毁,您将无法获得位置更新。该服务将在后台运行,您将收到更新通知。
答案 2 :(得分:0)
关键是您要设置位置监听器并请求服务中的更新 。这样做,听众总是在运行。然后,当您打开活动时,您可以绑定服务并读取服务已存储的位置。
我认为你正在做活动中的所有事情,这就是为什么你不能与众不同的原因。