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 如何用MATLAB实现以下三个公式(有相互嵌套)
  • ¥50 安装华大九天aether
  • ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
  • ¥15 setInterval 页面闪烁,怎么解决
  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)