程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> alarm-一次如何設置多個報警器?

alarm-一次如何設置多個報警器?

編輯:編程綜合問答
一次如何設置多個報警器?

程序中,我需要從數組中設置報警器,但是每次只能設置一個報警器,並且在數組的最後位置。如在一次設置多個報警器呢?
這是我使用的代碼:

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);

                    } 

最佳回答:


在 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();
    }
}
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved