gpt4 book ai didi

android - 警报管理器未在 android 中的确切时间触发警报

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:49:46 24 4
gpt4 key购买 nike

我使用如下日历类安排闹钟

Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY,1);
cal.getTimeInMillis();
cal.set(Calendar.MINUTE,05);
long TriggerMillis = cal.getTimeInMillis();

AlarmManager aManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
aManager.set(AlarmManager.RTC_WAKEUP, TriggerMillis,pIntent);

其中 pIntent 是在警报触发时进一步处理的未决 Intent 。

事件触发有几秒的延迟。使用 Calendar 类来完成此任务是否有任何问题。有什么建议吗?

TIA..

最佳答案

你有两个问题:

  1. 直接对服务使用_WAKEUP 警报是不可靠的。唯一可靠的模式涉及 WakefulBroadcastReceiver、我的 WakefulIntentService 或类似的东西,其中 PendingIntent 将指向 BroadcastReceiver.

  2. 如果您的 android:targetSdkVersion 为 19 或更高版本,并且您正在 API 级别 19+ 设备上运行,则 set() 不准确。理想情况下,您允许它不精确,或者可能使用 setWindow() 来控制它的关闭程度,以最大限度地减少警报事件的电源冲击。如果它绝对必须在精确的时刻发生,您将需要使用 setExact()。由于 setWindow()setExact() 是 API 级别 19 的新功能,您需要在旧设备上回退到 set(),通过检查 Build.VERSION.SDK_INT 并进行相应的分支。

关于android - 警报管理器未在 android 中的确切时间触发警报,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21355348/

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