Android 使用Alarm Manager在特定时间设置通知,但我的receiver类未按时调用
还有我最重要的文件Android 使用Alarm Manager在特定时间设置通知,但我的receiver类未按时调用,android,notifications,alarmmanager,Android,Notifications,Alarmmanager,还有我最重要的文件 Long time = prefs.getLong("dailynoti", 0); Intent intent = new Intent(cn, NotificationReceiver.class); intent.putExtra("Desc", "Description..."); PendingIntent pendingIntent = PendingIntent.getBroadcast(cn,
Long time = prefs.getLong("dailynoti", 0);
Intent intent = new Intent(cn, NotificationReceiver.class);
intent.putExtra("Desc", "Description...");
PendingIntent pendingIntent = PendingIntent.getBroadcast(cn, 1055, intent,0);
AlarmManager alarmManager = (AlarmManager) cn.getSystemService(cn.ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,time, AlarmManager.INTERVAL_DAY, pendingIntent);
我认为一种可行的方法是使用
alarmManager.setRepeating()
代替alarmManager.set()
,并在警报触发时设置下一个警报。这将为您提供几乎准确的结果。为什么差不多?因为Android M中引入了延迟。所以这会给你0到+5分钟的延迟。为什么要否决这个问题。?我尝试了很多事情,但没有找到解决方案,所以我贴了一个问题。如果我错了,那么在评论中说出这一点,这样我就可以改变它。
<receiver
android:name="com.mypackage.NotificationReceiver"
android:enabled="true"
android:exported="true" >
<intent-filter>
<action android:name="android.intent.action.REBOOT" />
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
PendingIntent pendingIntent = PendingIntent.getBroadcast(cn, 1055, intent, PendingIntent.FLAG_CANCEL_CURRENT
//FLAG_NO_CREATE
//FLAG_UPDATE_CURRENT