我需要设置每周重复一次的多个警报,以在用户上某堂课(这是一个学术应用程序)时自动使手机振动,然后在上课结束后重置音量.
我已经创建了警报,但是如果用户禁用了此功能,则必须有一种停用所有警报的方法.我也知道我必须通过向AlarmManager.cancel()方法传递和意图使用相同的参数来执行此 *** 作,但是这里的问题是:
用户可以取消课程并注册课程(但不能直接在应用程序中注册),并且该信息已更新并反映在数据库中,仅保留当前课程.因此,如果我对不再存在的类设置了警报,那么如果我无法复制PendingIntent,该如何取消它?
我在这里看到的一个解决方案是创建一个db表来跟踪当前警报,然后对它们进行完全控制,另一种方法是在更新类列表时取消并重置所有警报,但是这样做很公平.时间,第三个但不太友好的选择是简单地等待用户启动电话,并且在重置警报时,只需设置我需要的警报即可(如果我在此启动行为上有误,请更正).我应该尝试第四种选择吗?如果足够好,可以选择其中一种?
解决方法:
首先,您不需要设置多个警报.只需设置NEXT警报,然后在该警报触发时,设置新的下一个警报.如果重新启动电话,丢失的警报也会很容易再次设置,因为您只需要考虑一个警报.
我使用这个小例程来设置警报. Set参数的值确定警报是设置还是取消.
public static voID SetMyAlarm(Context c, long AlarmTime, Boolean Set) { Intent intent = new Intent(c, AlarmReceiver.class); // The broadcast receiver that will handle my alarm int UniqueID =8192; // ID for this specific alarm, use a different ID for each separate alarm PendingIntent sender = PendingIntent.getbroadcast(c, UniqueID, intent, PendingIntent.FLAG_UPDATE_CURRENT); AlarmManager am = (AlarmManager) c.getSystemService(Context.ALARM_SERVICE); if (Set) { am.set(AlarmManager.RTC_WAKEUP, AlarmTime, sender); } else { am.cancel(sender); }}
总结 以上是内存溢出为你收集整理的使用Android跟踪多个警报全部内容,希望文章能够帮你解决使用Android跟踪多个警报所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)