[英]Android AlarmManager works only once
public void SetAlarm(Context context, int sec)
{
AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(context, Alarm.class);
PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, 0);
am.set(AlarmManager.RTC, System.currentTimeMillis()+1000*5 , pi);
i = new Intent(context, Alarm.class);
pi = PendingIntent.getBroadcast(context, 0, i, 0);
am.set(AlarmManager.RTC, System.currentTimeMillis()+1000*10 , pi);
}
为什么onReceive在10秒后只能工作一次?
警报管理器将取消第一个警报,因为已向警报管理器提供了具有相同信息的未决意图。 任何警报,其意图与该警报相匹配(由filterEquals(Intent)定义)的任何类型的警报都将被取消。
如果要设置多个警报(重复警报或单个警报),则只需使用不同的requestCode创建它们的PendingIntents。 如果requestCode相同,则新警报将覆盖旧警报。
试试这个...
public void SetAlarm(Context context, int sec)
{
AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(context, Alarm.class);
PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, 0);
am.set(AlarmManager.RTC, System.currentTimeMillis()+1000*5 , pi);
i = new Intent(context, Alarm.class);
pi = PendingIntent.getBroadcast(context, 1, i, 0); // new request code
am.set(AlarmManager.RTC, System.currentTimeMillis()+1000*10 , pi);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.