代码之家  ›  专栏  ›  技术社区  ›  Jeffrey Blattman

android:处理可选位置

  •  1
  • Jeffrey Blattman  · 技术社区  · 15 年前

    问题是如何在服务中处理这个案例。我可以等待位置,但由于我不能依赖用户中止,我如何知道何时停止等待,并假设没有可用的位置?好像我可以做点什么,

    1. 使用action“get location”调度服务,设置位置侦听器,等待更新,使用action“refresh”调度相同的服务,例如3分钟后
    2. 在服务操作“刷新”中,获取最后一个已知位置,并对此感到满意。不是得到就是没有。如果它是空的,我们知道我们没有位置,我们已经尽力了。

    看起来这是可行的,但它变得越来越复杂,因为我不能再使用简单的intent服务(我假设),因为如果intent服务在onHandleIntent()之后停止自身,那么将不会收到on location changed事件。

    不管怎样,事情越来越复杂了,所以我想知道是否有更简单的方法。

    1 回复  |  直到 15 年前
        1
  •  0
  •   Jeffrey Blattman    15 年前

    回答我自己的问题。。。我是这样解决的,

    实际执行更新工作的update service-intent服务。这个函数只调用getLastKnownLocation()来获取位置。

    我们将LocationService作为重复警报安排为我们的“后台”流程。

    活动处理事情的方式不同。它请求位置更新,并弹出一个对话框。我们要么获取位置更新,要么用户取消对话框。不管怎样,我们注销位置更新,然后直接启动UpdateService(不是LocationService,我们已经在这里找到了位置)。