我想使用请求代码设置多个警报。 我为每个警报提供了不同的请求代码值,但alarmManager仍然只执行最后设置的警报。 这是我现有的代码:
public void Alarm(){
Intent intent = new Intent(MainActivity.this, BroadCast.class);
alarmID = (int)(System.currentTimeMillis() % 1000000000); //for request code
PendingIntent sender = PendingIntent.getBroadcast(
MainActivity.this, alarmID, intent, 0);
Calendar calendar = Calendar.getInstance();
calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH),
calendar.get(Calendar.DATE),hours,mins,0);
AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
am.setInexactRepeating(AlarmManager.RTC_WAKEUP,
calendar.getTimeInMillis(),am.INTERVAL_DAY, sender);
}
答案 0 :(得分:0)
尝试setRepeating而不是setInexactRepeating,你会得到重复的警报。
am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()
+ (5 * 1000),5 * 1000, pendingIntent);
答案 1 :(得分:0)
从Android 5.1(API版本22)开始,重复警报的最短时间为1分钟。如果您需要在一分钟内完成工作,只需直接设置闹钟,然后从该闹钟的处理程序中设置下一个闹钟等。如果您需要在5秒钟内完成工作(例如),请将其发布到处理程序而不是使用AlarmManager。
这里有好的文件:
https://en.proft.me/2017/05/7/scheduling-operations-alarmmanager-android/