Android 在API=>;中以精确的间隔重复报警管理器;19?

Android 在API=>;中以精确的间隔重复报警管理器;19?,android,alarmmanager,intervals,Android,Alarmmanager,Intervals,我读了大量的书,但我仍然认为这个问题没有一个明确/完整的答案 首先要澄清的是: 这个问题不是关于手机电池的节电,而是关于精确的计时,我是安卓系统的新手 现在让我更深入地解释这个问题。我有一个报警管理器,它将在给定的时间间隔(每2分钟)调用toast(为简单起见)manager.setRepeating(AlarmManager.RTC_WAKEUP,System.currentTimeMillis(),interval,PendingEvent); 上面将在BroadcastReceiver上

我读了大量的书,但我仍然认为这个问题没有一个明确/完整的答案

首先要澄清的是: 这个问题不是关于手机电池的节电,而是关于精确的计时,我是安卓系统的新手

现在让我更深入地解释这个问题。我有一个报警管理器,它将在给定的时间间隔(每2分钟)调用toast(为简单起见)
manager.setRepeating(AlarmManager.RTC_WAKEUP,System.currentTimeMillis(),interval,PendingEvent);
上面将在BroadcastReceiver上调用onReceive()方法

public class AlarmReceiver extends BroadcastReceiver  {
@Override
public void onReceive(Context context, Intent intent) {
    //Toast ....bala blah
   }}
现在这是API19上的精确间隔setRepeating()不再精确了!我发现一些人建议(在其他表单上)使用setExact()。但对于如何在Interval中使用setExact()没有任何示例或明确的解释(或者我找不到)。据我所知,setExact()与setRepeating()不同,它是开-关操作,因此根据其他一些人的说法,下一个时间表需要通过onReceive()设置(同样,我找不到一个示例;(.无论如何,这就是我现在的位置。我非常感谢任何评论、建议、链接或示例


我希望我的问题问得足够清楚,顺便说一句,如果有其他方法(在API>19中以精确的间隔运行任务,请也让我知道)非常感谢您可以使用
setExact
类似于
setRepeating

void scheduleAlarm(Context context) {
    AlarmManager alarmMgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
    Intent yourIntent = new Intent();
    //TODO configure your intent
    PendingIntent alarmIntent = PendingIntent.getBroadcast(context, MyApplication.ALARM_REQUEST_CODE, yourIntent, PendingIntent.FLAG_UPDATE_CURRENT);
    alarmMgr.setExact(AlarmManager.RTC_WAKEUP, timeToWakeUp, alarmIntent);
}
这两个区别是:

  • 时间将是准确的(或)
  • 您必须在BroadcastReceive的
    onReceive
    中安排下一次事件

      public class AlarmReceiver extends BroadcastReceiver  {
      @Override
      public void onReceive(Context context, Intent intent) {
        //TODO process alarm
        scheduleAlarm(context);
      }}
    

  • 检查此间接或直接响应另一种方法不再精确。该死,这对我来说是个问题,因为我正在制作报警应用程序,但我需要使minSDKversion=19才能使用setExact吗?@MrNarendra不,你不需要这样做。