API 19 及更高版本中 AlarmManager setRepeating 的替代方案?

zer*_*obe 2 android repeat alarm alarmmanager

我的应用程序需要非常准确的重复闹钟计时。从 API 19 开始,AlarmManager setRepeating 现在不精确地节省电池(保存树木和所有)。

是否有任何解决方法可以让 API 19 的 setExact 方法在循环上工作?

注意:从 API 19 开始,所有重复警报都不准确。如果您的应用程序需要精确的交付时间,那么它必须使用一次性精确警报,并如上所述重新安排每次时间。targetSdkVersion 早于 API 19 的旧应用程序将继续将其所有警报(包括重复警报)视为准确警报。

Dan*_* Mi 5

如果Google提供了setExactRepeating()方法,也许可以解决你的问题。(这是一个笑话)

目前,您必须自行重新安排闹钟时间。

  1. setExact()第一次使用该方法来安排闹钟,例如:

    AlarmManager.setExact(AlarmManager.RTC_WAKEUP,triggerAtMillis,pendingIntent);

  2. 重新安排广播接收器中的闹钟onReceiver(),重复时间为一天(AlarmManager.INTERVAL_DAY在以下代码中):

    公共无效onReceive(上下文上下文,意图意图){

        Context danielContext = MonitorApp.getContext();
        AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
        Intent i = new Intent(context, ReceiverName.class);//put your own ReceiverName
        PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, i, 0);
        alarmManager.setExact(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + AlarmManager.INTERVAL_DAY, pendingIntent);
    
    Run Code Online (Sandbox Code Playgroud)

    }

当然,在onReceiver()方法中做一些事情来达到你的目的。