Android AlarmManager设置和重置闹钟时出现问题

Android AlarmManager设置和重置闹钟时出现问题,第1张

概述我使用Alarm来从服务器获取数据. 我喜欢给用户启动和停止闹钟的选项. 这意味着我必须检查是否已经设置了闹钟. 我发现一些代码告诉我是否已经设置了闹钟: Intent I = new Intent(getApplicationContext(),AlarmReceiver.class);PendingIntent P = PendingIntent.getBroadcast(getApplic 我使用Alarm来从服务器获取数据.
我喜欢给用户启动和停止闹钟的选项.
这意味着我必须检查是否已经设置了闹钟.
我发现一些代码告诉我是否已经设置了闹钟:
Intent I = new Intent(getApplicationContext(),AlarmReceiver.class);PendingIntent P = PendingIntent.getbroadcast(getApplicationContext(),I,PendingIntent.FLAG_NO_CREATE);found = (P!=null);

如果闹钟已经设置,我取消它,但如果没有设置,那么我设置它(如切换)

问题是这只有一次.上述代码首次检查现有的报警
将返回null,表示无报警,但在返回指针后取消报警
到了一些东西,但是闹钟没有运行.

这里是设置闹钟的代码

am = (AlarmManager) getSystemService(getApplicationContext().ALARM_SERVICE);Intent I = new Intent(getApplicationContext(),PendingIntent.FLAG_CANCEL_CURRENT);am.setRepeating(AlarmManager.RTC_WAKEUP,System.currentTimeMillis(),60000,P);

这里是取消闹钟的代码:

am = (AlarmManager) getSystemService(getApplicationContext().ALARM_SERVICE);Intent I = new Intent(getApplicationContext(),PendingIntent.FLAG_CANCEL_CURRENT);am.cancel(P);

取消闹钟后,我可以重新设置一个消息,让它处于待处理状态.

解决方法 取消AlarmManager时,请勿使用具有FLAG_CANCEL_CURRENT标志的PendingIntent.
取而代之的是在取消警报后明确取消PendingIntent:
am = (AlarmManager) getSystemService(getApplicationContext().ALARM_SERVICE);Intent i = new Intent(getApplicationContext(),AlarmReceiver.class);PendingIntent p = PendingIntent.getbroadcast(getApplicationContext(),i,0);am.cancel(p);p.cancel();
总结

以上是内存溢出为你收集整理的Android AlarmManager设置和重置闹钟时出现问题全部内容,希望文章能够帮你解决Android AlarmManager设置和重置闹钟时出现问题所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存