我在我的代码中设置了警报,以便在特定时间内启动.
警报机制在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); } }
因为我使用Service
我GetApplicationContext()
用作上下文来设置闹钟.
该onReceive()
代码:
@Override public void onReceive(Context context, Intent intent) { for (SchedulerListener listener : listeners) { listener.fetchAndRebuildNotification(); } }
这是以下声明BroadcastReceiver
:
回调在服务中运行一个方法(当警报应该触发时它仍处于活动状态,注意它不会启动它).
整个事情是library
在我的应用程序中使用的,在那里我以相同的方式声明接收器.
有时警报会发射一次,但大多数情况下它根本不发射.
有没有人经历过这样的事情?
我不相信SDK 19很常见,因为许多应用程序正在使用AlarmManager
,如果它很常见,它们也会破坏.