【发布时间】:2014-04-26 20:54:36
【问题描述】:
我正在尝试停止警报并检查它是否停止,但它总是返回 true 表示警报正在工作。我试图根据链接https://stackoverflow.com/a/17616299/1226882 中的答案停止警报,但它对我不起作用。
请参考以下代码
-
启动闹钟
public static void startSchedulerAlaram(Context ctx) { Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(System.currentTimeMillis()); calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0); if (calendar.compareTo(Calendar.getInstance()) <= 0) calendar.add(Calendar.DATE, 1); AlarmManager alarmManager = (AlarmManager) ctx .getSystemService(Context.ALARM_SERVICE); Intent intent = new Intent(ctx, Alaram_Receiver.class); intent.setAction(Utility.SCHEDULE_ACTION); PendingIntent pi = PendingIntent.getBroadcast(ctx, 1, intent,0); alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),AlarmManager.INTERVAL_DAY, pi); log("Scheduler Alarm", "Started"); } -
停止闹钟
public static void stopSchedulerAlaram(Context ctx) { Intent intent = new Intent(ctx, Alaram_Receiver.class); intent.setAction(Utility.SCHEDULE_ACTION); PendingIntent pendingIntent = PendingIntent.getBroadcast(ctx, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT); AlarmManager alarmManager = (AlarmManager) ctx .getSystemService(Context.ALARM_SERVICE); alarmManager.cancel(pendingIntent); log("Scheduler Alarm", "Stopped"); } -
检查警报
public static boolean checkSchedulerAlaram(Context ctx) { boolean alarmUp = (PendingIntent.getBroadcast(ctx, 1, new Intent(ctx,Alaram_Receiver.class).setAction(Utility.SCHEDULE_ACTION), PendingIntent.FLAG_NO_CREATE) != null); return alarmUp; }
【问题讨论】:
-
贴出你使用 stopSchedulerAlaram() 的部分
-
我正在使用来自活动的
stopSchedulerAlaram(),例如if (Utility.checkSchedulerAlaram(this)) Utility.stopSchedulerAlaram(this); -
我正在调用同一活动的开始、停止和检查
标签: android alarmmanager