Java 使用请求代码设置多个报警
我想使用请求代码设置多个警报。 我为每个警报提供不同的请求代码值,但alarmManager仍然只执行最后一组警报。 以下是我现有的代码:Java 使用请求代码设置多个报警,java,android,alarmmanager,Java,Android,Alarmmanager,我想使用请求代码设置多个警报。 我为每个警报提供不同的请求代码值,但alarmManager仍然只执行最后一组警报。 以下是我现有的代码: public void Alarm(){ Intent intent = new Intent(MainActivity.this, BroadCast.class); alarmID = (int)(System.currentTimeMillis() % 1000000000); //for request code
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);
}
尝试setRepeating而不是setInexactRepeating,您将收到重复报警
am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()
+ (5 * 1000),5 * 1000, pendingIntent);
从Android 5.1(API版本22)开始,重复报警的时间至少为1分钟。如果您需要在一分钟内完成工作,只需直接设置警报,然后从该警报的处理程序中设置下一个警报,等等。如果您需要在5秒内完成工作(例如),请将其发送到处理程序,而不是使用AlarmManager
这里的文档很好:
您能检查一下您的报警id吗?可以。我用烤面包来检查。它们有不同的值。为了清楚起见,处理程序要求应用程序处于活动状态,而报警管理器则不要求。因此,设计必须考虑到这一点。