我有一个作为前台服务运行的服务
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);
}
};
当设备连接到互联网时,它会执行方法 checkSheet()。此方法使用服务器检查一些内容,并根据结果启动 GPS 并跟踪设备的位置。
locationMgr.requestLocationUpdates(LocationManager.GPS_PROVIDER, GPS_TIME, GPS_DISTANCE, this);
现在......在我们的测试中,这一切似乎都很好。但是用户有问题,因为有时他们只在应该开始记录后几小时才能看到跟踪。
现在的问题是这背后的原因是什么。我猜他们不像我们的设备那样使用他们的设备,并且设备进入睡眠模式,我们的测试设备永远不会进入,因为我们更频繁地使用这些设备
一些问题: 对于前台服务: - 当设备进入更深的睡眠模式时,Runnable 是否每 15 分钟停止一次运行?- 当设备处于更深的睡眠模式时,是否无法初始化 locationManager.requestLocationUpdates?