设置&的Android AlarmManager问题重置警报

时间:2011-02-10 22:01:58

标签: android android-intent alarm alarmmanager android-pendingintent

我使用Alarm来从服务器获取数据。 我想让用户选择启动和停止警报。 这意味着我必须检查并查看是否已设置警报。 我找到了一些代码告诉我警报是否已经设置:

Intent I = new Intent(getApplicationContext(),AlarmReceiver.class);
PendingIntent P = PendingIntent.getBroadcast(getApplicationContext(), 0, I, PendingIntent.FLAG_NO_CREATE);
found = (P!=null);

如果警报已经设置我取消它但如果没有设置则我设置它(如切换)

问题是这只能运作一次。上面的代码第一次检查现有的警报 将返回null表示没有警报但是在我取消警报后它返回一个指针 什么,但警报没有运行。

这是设置闹钟的代码

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

以下是取消闹钟的代码:

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

取消闹钟后,我是否要重置某些内容,以使其PendingIntent消失。

1 个答案:

答案 0 :(得分:49)

取消AlarmManager时,请勿使用标PendingIntent的{​​{1}}。 相反,取消警报后明确取消FLAG_CANCEL_CURRENT

PendingIntent