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

前端之家收集整理的这篇文章主要介绍了Android AlarmManager设置和重置闹钟时出现问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用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();
原文链接:https://www.f2er.com/android/312963.html

猜你在找的Android相关文章