我不清楚如何实现这一目标,而且我迷失在Android文档中。我会认为这是一个很常见的情况,所以有人可以告诉我适当的方式来获取BroadcastReceiver所以我可以取消注册它(或指向我正确的方向,这样我可以教育自己)?
设置警报:
registerReceiver(alarmHandler, new IntentFilter("com.blah.alarm"));
PendingIntent pi = PendingIntent.getBroadcast(this, 0, new Intent("com.blah.alarm"), 0);
AlarmManager am = (AlarmManager) (this.getSystemService( Context.ALARM_SERVICE ));
am.setRepeating(
AlarmManager.RTC_WAKEUP, someCalendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pi);
不要报警:
PendingIntent pi = PendingIntent.getBroadcast(
this, 0, new Intent("com.blah.alarm", PendingIntent.FLAG_NO_CREATE);
if (pi != null) {
AlarmManager am = (AlarmManager)(this.getSystemService( Context.ALARM_SERVICE ));
am.cancel(pi);
}
unregisterReceiver(????????); // how do I get alarmHandler ref ??
答案 0 :(得分:1)
您需要将alarmHandler
引用保存在某个变量中,以便在需要调用unregister()时获取它。 Android不提供任何可以调用的方法来获取对它的引用。