如何在android中一次设置多个警报?

如何在android中一次设置多个警报?,第1张

概述我正在制作一个小应用程序,我必须从数组设置警报,但只设置一个警报,并且在阵列的最后位置的时间工作,为什么它的行为如下,这是我的代码AlarmManager[]alarmManager=newAlarmManager[24];for(f=0;f<arr2.length;f++){In

我正在制作一个小应用程序,我必须从数组设置警报,但只设置一个警报,并且在阵列的最后位置的时间工作,为什么它的行为如下,这是我的代码

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

提前致谢

@H_404_10@解决方法:

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

基本上,您只想将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();    }}
总结

以上是内存溢出为你收集整理的如何在android中一次设置多个警报?全部内容,希望文章能够帮你解决如何在android中一次设置多个警报?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1102080.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存