我有一个由几个活动组成的应用程序。我希望当我的应用程序启动时,我开始从LocationManager监听更新,几分钟后,我想要超时并停止监听更新。我在其他应用程序中完成了这个,但我只有一个Activity。
我现在拥有的是开始侦听LocationUpdates的BackgroundService;如果它能够快速获得足够好的位置,它就会停止监听更新。但有时候它并没有快速获得一个好的位置,我希望它能超时,所以我有一个Timer会在一段时间后停止监听更新。当我启动应用程序并保留在第一个活动中时,此工作正常。
问题是当我启动应用程序,然后开始使用应用程序和其他活动启动时,Timer永远不会关闭,所以LocationManager始终打开,直到应用程序退出。
思考?是否有更好的方法来收听位置更新,以便应用中的任何活动都可以获取该位置,并确保它超时以停止侦听更新?
更新 事实证明,当我切换活动时,BackgroundService会被销毁,我在onDestroy()中取消了计时器。感谢您的回复 - 这足以证实一般方法是合理的,我可能在某处犯了一个愚蠢的错误(真实)。
答案 0 :(得分:0)
为什么不把Timer放在后台服务中?这将解决问题。