Android: Timer in BackgroundService for Location



我有一个由几个活动组成的应用程序。我希望当我的应用启动时,我开始侦听来自位置管理器的更新,几分钟后,我想超时并停止侦听更新。我已经在其他应用程序中完成了此操作,但我只有一个活动。

我现在有一个后台服务,它开始侦听LocationUpdates;如果它很快得到一个足够好的位置,它就会停止侦听更新。但有时它不会很快得到一个好的位置,我希望它超时,所以我有一个计时器,它会在一段时间后停止侦听更新。当我启动应用程序并停留在第一个活动中时,这工作正常。

问题是当我启动应用程序,然后开始使用该应用程序并且其他活动启动时,计时器永远不会关闭,因此 LocationManager 始终处于打开状态,直到应用程序退出。

思潮?有没有更好的方法来侦听位置更新,以便应用中的任何活动都可以获取位置信息,并确保它超时以停止侦听更新?

更新:事实证明,当我切换活动时,后台服务被销毁,并且我在onDestroy()中取消了计时器。感谢您的回复 - 这足以确认一般方法是合理的,我可能在某处犯了一个愚蠢的错误(真实)。

为什么不把计时器放在后台服务?这将解决问题。

最新更新