我有一个可以在有或没有位置的情况下运行的 android 应用程序。在活动中处理这种情况很简单:我设置了一个位置侦听器并等待一个进度对话框,但允许用户中止等待(碰巧如果位置提供程序被禁用,没有特殊错误就是永远返回位置......很好)。
但是,我也有一项需要位置的服务。该服务可能在活动之前运行,所以我不能依赖活动来获取位置(或不)。
问题是如何在服务中处理这种情况。我可以等待位置,但由于我不能依赖用户中止,我怎么知道何时停止等待,并假设没有可用的位置?看来我可以做类似的事情,
- 使用“获取位置”操作安排服务,它设置位置侦听器,等待更新,使用“刷新”操作在 3 分钟后安排相同的服务
- 在服务操作“刷新”中,获取最后一个已知位置,并对此感到满意。它要么获得,要么没有。如果它为空,我们知道我们没有位置并且我们已经尽力了。
看起来这会起作用,但它变得越来越复杂,因为我不能再使用简单的意图服务(我假设),因为如果意图服务在 onHandleIntent() 之后自行停止,那么将不会收到 on location changed 事件。
无论如何,它变得有点复杂,所以我想知道是否有更简单的方法。