我如何知道我的闹钟管理器计时器是否已打开?

时间:2011-11-04 09:53:52

标签: android

我正在使用此代码(来自我的活动)在应用程序中启动定期计时器:

Intent intent = new Intent(this, MyBroadcastReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this.getApplicationContext(), 234324243, intent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(),(i * 1000), pendingIntent);
Toast.makeText(this, "Alarm set in " + i + " seconds",
Toast.LENGTH_SHORT).show();

我想知道我是如何知道(来自不同的活动)计时器正在运行?

2 个答案:

答案 0 :(得分:2)

我能想到的一种可能性是检查是否定义了待处理的Intent。

你可以打电话

PendingIntent pendingIntent = PendingIntent.getBroadcast(this.getApplicationContext(), 234324243, intent, PendingIntent.FLAG_NO_CREATE);

这将为您提供待处理的Intent,如果未指定Intent,则为null。这不能保证警报已设置,但这是检查之前是否调用了警报代码的简单方法。

另一种可能性是将所有设置的警报保存在SharedPreferences文件中。通过这种方式,您可以在共享的prefs文件中查找应用程序设置的所有警报。

据我所知,无法从AlarmManager获取应用程序的设置警报列表

答案 1 :(得分:0)

停止功能中的

Intent intent = new Intent(this, LocaitonSampleBroadcaseReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast( this.getApplicationContext(), 234324243, intent, 0); 
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); alarmManager.cancel(pendingIntent);

只需添加:

pendingIntent.cancel();

所以你可以使用字符串写评论Janusz

PendingIntent pendingIntent = PendingIntent.getBroadcast(this.getApplicationContext(), 234324243, intent, PendingIntent.FLAG_NO_CREATE);