AlarmManager在Android 4.4.2中停止工作(使用SetExact())

 泽宇的精彩人生 发布于 2023-02-10 08:57

我在我的代码中设置了警报,以便在特定时间内启动.
警报机制在SDK <19时运行良好,但在19日不会触发警报.
这是我设置闹钟的代码:

public void SetAlarm(Context context, Long executionTime)
{

    AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    Intent intent = new Intent(context, AlarmReciever.class);
    PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    // Only one alarm can live, so cancel previous.
    am.cancel(pi);
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
        am.set(AlarmManager.RTC_WAKEUP, executionTime, pi);
    } else {
        setAlarmFromKitkat(am, executionTime, pi);
    }
}

因为我使用ServiceGetApplicationContext()用作上下文来设置闹钟.

onReceive()代码:

@Override
public void onReceive(Context context, Intent intent) {
    for (SchedulerListener listener : listeners) {
        listener.fetchAndRebuildNotification();
    }
}

这是以下声明BroadcastReceiver:


回调在服务中运行一个方法(当警报应该触发时它仍处于活动状态,注意它不会启动它).

整个事情是library在我的应用程序中使用的,在那里我以相同的方式声明接收器.

有时警报会发射一次,但大多数情况下它根本不发射.

有没有人经历过这样的事情?
我不相信SDK 19很常见,因为许多应用程序正在使用AlarmManager,如果它很常见,它们也会破坏.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有