Nit*_*tin 10 android alarmmanager
我正在制作一个小应用程序,我必须从数组设置警报,但只设置一个警报,并且在阵列的最后位置的时间工作,为什么它的行为如下,这是我的代码
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);
}
Run Code Online (Sandbox Code Playgroud)
提前致谢
rya*_*dlf 22
在您pendingIntent需要将第二盘requestCode唯一编号.我通常通过for循环运行数组,并为数组中的每个项动态设置请求代码.没有requestCode警报会相互覆盖.
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);
}
Run Code Online (Sandbox Code Playgroud)
基本上,您只想更改requestCode为动态数字.通过将其设置为f您为数组中的每个项目赋予它一个新的唯一ID.请记住,如果要取消警报,则需要使用另一个for循环并单独取消每个警报.我个人将所有警报添加到他们自己的阵列中,以便我可以单独处理它们.
然后,如果您需要取消它们:
private void cancelAlarms(){
if(intentArray.size()>0){
for(int i=0; i<intentArray.size(); i++){
alarmmanager.cancel(intentArray.get(i));
}
intentArray.clear();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22641 次 |
| 最近记录: |