使用Android跟踪多个警报

使用Android跟踪多个警报,第1张

概述我需要设置每周重复一次的多个警报,以在用户上某堂课(这是一个学术应用程序)时自动使手机振动,然后在上课结束后重置音量.我已经创建了警报,但是如果用户禁用了此功能,则必须有一种停用所有警报的方法.我也知道我必须通过向AlarmManager.cancel()方法传递和意图使用相同的参数来执

我需要设置每周重复一次的多个警报,以在用户上某堂课(这是一个学术应用程序)时自动使手机振动,然后在上课结束后重置音量.

我已经创建了警报,但是如果用户禁用了此功能,则必须有一种停用所有警报的方法.我也知道我必须通过向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跟踪多个警报所遇到的程序开发问题。

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

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

原文地址: http://outofmemory.cn/web/1085368.html

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

发表评论

登录后才能评论

评论列表(0条)

保存