Android AlarmManager使用API设置精确的重复间隔(无延迟)>;19
我正在开发一个Android应用程序,它使用一个我每五分钟用AlarmManager调用一次的服务从惯性传感器收集数据。此服务有一个计时器,仅收集一分钟的数据。所以我想收集一分钟的数据,然后睡眠四分钟(循环过程)。问题在于,在API>19上,带有setRepeating()的AlarmManager不精确(延迟一分钟或更长)。有很多帖子,但没有一个明确的解决方案。。。在主要活动中,我有:Android AlarmManager使用API设置精确的重复间隔(无延迟)>;19,android,Android,我正在开发一个Android应用程序,它使用一个我每五分钟用AlarmManager调用一次的服务从惯性传感器收集数据。此服务有一个计时器,仅收集一分钟的数据。所以我想收集一分钟的数据,然后睡眠四分钟(循环过程)。问题在于,在API>19上,带有setRepeating()的AlarmManager不精确(延迟一分钟或更长)。有很多帖子,但没有一个明确的解决方案。。。在主要活动中,我有: public void startservice(View view){ AlarmManager
public void startservice(View view){
AlarmManager scheduler = (AlarmManager) getSystemService(ALARM_SERVICE);
Intent intent = new Intent(getApplicationContext(), SensorLogger.class);
PendingIntent scheduledIntent = PendingIntent.getService(getApplicationContext(), 0, intent, 0);
scheduler.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 60000 * 5, scheduledIntent);
}
在服务中,比如:
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
timer.scheduleAtFixedRate(new stoptask(), 60000, 60000);
...
return START_NOT_STICKY;
}
private class stoptask extends TimerTask
{
public void run()
{
...
timer.cancel();
stopSelf();
}
}
谢谢 您不能再确切地使用重复api了。您需要设置一个精确的报警,然后在该报警内设置一个新的报警,以便重复 我发布了一个库,负责android上的多定时器实现——看看它可能会有所帮助