我在代码中设置了一个在特定时间响起的闹钟。
警报机制在 SDK 这是我设置闹钟的代码:
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
I use GetApplicationContext()
作为上下文。
The onReceive()
code :
@Override
public void onReceive(Context context, Intent intent) {
for (SchedulerListener listener : listeners) {
listener.fetchAndRebuildNotification();
}
}
这是声明BroadcastReceiver
:
<receiver
android:name="com.SagiL.myAppName.BroadCastReceivers.AlarmReciever" />
回调在服务中运行一个方法(当警报应该触发时,该方法仍然存在,注意它不会启动警报)。
这整件事是一个library
它在我的应用程序中使用,并且我以相同的方式声明接收器。
有时警报会触发一次,但大多数情况下根本不会触发。
有人经历过这样的事情吗?
我不敢相信这对于 SDK 19 来说很常见,因为很多应用程序都在使用AlarmManager
如果很常见,它们也会破裂。