Android服务startforeground LocationManager requestLocationUpdates在设备休眠时

时间:2013-05-07 13:21:07

标签: android service gps foreground

我有一个作为前台服务运行的服务

startForeground(1234, notification);

在这项服务中,我有一个应该每15分钟运行一次的运行:

private Runnable runnable = new Runnable()
{
    @Override
    public void run()
    {
        Log.d("maw", "Gps::run");
        if (Constants.checkInternet(getApplicationContext())) checkSheet();
        handler.postDelayed(this, Constants.REFRESH_TIME);
    }
};

当设备连接到internt时,它执行方法checkSheet()。 此方法使用服务器检查某些内容,并根据结果启动GPS并跟踪设备的位置。

locationMgr.requestLocationUpdates(LocationManager.GPS_PROVIDER, GPS_TIME, GPS_DISTANCE, this);

现在......在我们的测试中,这一切看起来都很好。但是用户遇到了问题,因为有时他们只能看到应该开始记录后的跟踪小时数。

现在的问题是这背后的原因是什么。 我猜他们不会像我们的设备一样使用他们的设备,并且设备进入睡眠模式我们的测试设备永远不会进入,因为我们更频繁地使用设备

一些问题: 对于前台服务: - 当设备进入深度睡眠模式时,Runnable是否每15分钟停止运行一次? - 当设备处于更深的睡眠模式时,是否无法初始化locationManager.requestLocationUpdates?

2 个答案:

答案 0 :(得分:1)

尝试使用AlarmManager,因此您的服务只需在实际工作时才能在内存中。 或者您可以使用wakelock

答案 1 :(得分:0)

经过大量测试后,看起来可运行的飞机有时会坠毁并完全停止工作。

现在解决了这个问题后,似乎对于前台服务,Runnable确实在继续运行,而locationManager.requestLocationUpdates确实做了它应该做的事情。