gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:14:16 30 4
gpt4 key购买 nike

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

首先要澄清一些事情:这个问题与手机省电无关,而是与精确计时有关,我是 Android 的新手。

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

public class AlarmReceiver extends BroadcastReceiver  {
@Override
public void onReceive(Context context, Intent intent) {
//Toast ....bala blah
}}

现在这是 API<19 上的精确间隔但是在 API=>19 中 setRepeating() 不再精确了!我发现有些人建议(在其他形式上)使用 setExact()。但是没有关于如何在 Interval 中使用 setExact() 的示例或明确的解释(或者我找不到)。据我所知,setExact() 与 setRepeating() 不同,因此根据其他一些人的说法,下一个时间表需要通过 onReceive() 设置(我再次找不到示例;(。无论如何,这就是我现在所在的位置。我真的很感谢任何评论或建议或链接或示例......

我希望我问的问题足够清楚,顺便说一句,如果有另一种方法可以解决这个问题(为了在 API>19 中以精确的时间间隔运行任务,也请告诉我)非常感谢

最佳答案

您可以像 setRepeating 一样使用 setExact

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);
}

这两个区别是:

  1. 时间将是准确的(或 as nearly as possible )
  2. 您必须在 BroadcastReceiver 的 onReceive 中安排下一次事件。

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

关于android - 在 API => 19 中以精确的时间间隔重复警报管理器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28269752/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com