我正在使用此代码(来自我的活动)在应用程序中启动定期计时器:
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();
我想知道我是如何知道(来自不同的活动)计时器正在运行?
答案 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);