我通过 BroadcastReceiver 和 AlarmManager 发出了定时通知:
static public void setReminderNotification(Context c){
AlarmManager alarmManager = (AlarmManager) c.getSystemService(Context.ALARM_SERVICE);
Intent alarmIntent = new Intent(c, ReminderReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(c, 12460, alarmIntent, PendingIntent.FLAG_UPDATE_CURRENT);
iTime = 24000;
if (iTime > 0) {
alarmManager.cancel(pendingIntent);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + iTime, iTime, pendingIntent);
}else if(iTime == 0){
alarmManager.cancel(pendingIntent);
}
}
我认识到,警报不会每 24 秒启动一次。这取决于。我在接收器中进行了记录:(格式:H - m - s)
Post Nofification: 10 - 47 - 0
Post Nofification: 10 - 47 - 13
Post Nofification: 10 - 47 - 37
Post Nofification: 10 - 48 - 1
Post Nofification: 10 - 48 - 25
Post Nofification: 10 - 49 - 0
Post Nofification: 10 - 49 - 13
Post Nofification: 10 - 49 - 37
Post Nofification: 10 - 50 - 1
Post Nofification: 10 - 50 - 25
Post Nofification: 10 - 51 - 0
Post Nofification: 10 - 51 - 13
Post Nofification: 10 - 51 - 37
Post Nofification: 10 - 52 - 1
Post Nofification: 10 - 52 - 42
Post Nofification: 10 - 53 - 0
Post Nofification: 10 - 53 - 13
我想知道为什么通知有时更短/更长。 有什么解决办法吗?
最佳答案
注意:从 API 19 (KITKAT) 开始,警报传送不准确:操作系统将转移警报以尽量减少唤醒和电池使用。有新的 API 来支持需要严格交付保证的应用程序;参见 setWindow(int, long, long, PendingIntent) 和 setExact(int, long, PendingIntent)。 targetSdkVersion 早于 API 19 的应用程序将继续看到以前的行为,即所有警报都在请求时准确传递。
请看这里http://developer.android.com/reference/android/app/AlarmManager.html
关于Android Notification & Alarmmanager - 时间不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21279616/