【问题标题】:Android LocationManger goes to sleep?Android LocationManger 进入睡眠状态?
【发布时间】:2011-08-19 19:27:38
【问题描述】:

我正在开发一个位置记录应用程序,它每秒保存一个电话位置。
我已经实现了一个订阅 LocationManager 更新的服务:

HandlerThread thread = new HandlerThread("LocationServiceHandler");
locationManager.requestLocationUpdates(GPS_PROVIDER, 
    1000 /* milliseconds*/, 0 /* meters */, listener, thread.getLooper());

服务通过绑定到应用程序上下文启动。
应用程序通常在后台运行,不需要任何用户交互。
通常,当我在我的建筑物周围走动时它可以正常工作 - 该服务每秒获取一个新的位置+时间戳并将其存储到位于外部存储的文件中。
但是当我到达远离城市的开阔场地时,我发现日志文件中的记录之间存在 4-5 分钟的间隔。我可以肯定地说,当时手机没有使用,它在开阔的天空下,没有任何可见的东西挡住了卫星。它不规律地发生,大约每小时一次,我无法在我的办公室重现这种行为。
有什么想法,可能是什么原因造成的?如何避免?
手机是 Nexus S,Android 2.3.4

【问题讨论】:

    标签: android gps locationmanager


    【解决方案1】:

    你在使用唤醒锁吗?手机可能会进入睡眠状态,因此您会错过位置。否则可能只是位置管理器不给你位置,因为 1000 毫秒是最好的情况。请参阅Update GPS Listener every 5 seconds 答案。

    【讨论】:

    • 不,我没有使用唤醒锁,但这很容易检查。我所需要的只是启动我的应用程序并且不要触摸手机......让我们说一个小时
    • 遗憾的是,手机没有让 LocationManager 进入睡眠状态。我是这样检查的:我已经启动了应用程序,锁定了手机屏幕并走了很长一段路(超过两个小时)。手机在我的口袋里,我根本没有碰它。之后我分析了日志并发现了一些 2 秒的间隙,这并没有打扰我。仍然无法重现长时间的 4-5 分钟间隔...
    猜你喜欢
    • 1970-01-01
    • 2017-06-23
    • 1970-01-01
    • 2012-07-14
    • 2012-03-29
    • 1970-01-01
    • 1970-01-01
    • 2012-06-21
    • 2016-10-25
    相关资源
    最近更新 更多