ssummeraw 2013-03-26 05:18 采纳率: 10%
浏览 2226
已采纳

一次如何设置多个报警器?

程序中,我需要从数组中设置报警器,但是每次只能设置一个报警器,并且在数组的最后位置。如在一次设置多个报警器呢?
这是我使用的代码:

AlarmManager[] alarmManager=new AlarmManager[24];
                for(f=0;f<arr2.length;f++)
                {
                    Intent intent = new Intent(AlarmR.this, Riciving.class);
                    pi=PendingIntent.getBroadcast(AlarmR.this, 0,intent, 0);

                    alarmManager[f] = (AlarmManager) getSystemService(ALARM_SERVICE);
                    alarmManager[f].set(AlarmManager.RTC_WAKEUP,arr2[f] ,pi);

                    } 
  • 写回答

1条回答 默认 最新

  • LiDaming_and 2013-04-02 06:37
    关注

    在 pendingIntent 中, 你应该设置第二个 requestCode 到一个单独的号码。我通常使用一个 for 循环来运行数组,并且给 array 中的每个 item 动态的设置请求代码,不用 requestCode 的话,alarm 就会相互覆盖。

    AlarmManager[] alarmManager=new AlarmManager[24];
    intentArray = new ArrayList<PendingIntent>();
    for(f=0;f<arr2.length;f++){
       Intent intent = new Intent(AlarmR.this, Riciving.class);
       pi=PendingIntent.getBroadcast(AlarmR.this, f,intent, 0);
       alarmManager[f] = (AlarmManager) getSystemService(ALARM_SERVICE);
       alarmManager[f].set(AlarmManager.RTC_WAKEUP,arr2[f] ,pi);
       intentArray.add(pi);
    }
    

    你只是想把 requestCode 改成一个动态的数。通过设定它为f,给array 中的每个 item 一个新的独特的id,如果你想取消 alarms,你需要使用另一个 for 循环来逐个取消。
    如果你想取消他们:

    private void cancelAlarms(){
        if(intentArray.size()>0){
            for(int i=0; i<intentArray.size(); i++){
                alarmmanager.cancel(intentArray.get(i));
            }
            intentArray.clear();
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题