繁体   English   中英

Android AlarmManager仅工作一次

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM