【问题标题】:Android Repeating Alarm not cancellingAndroid重复警报未取消
【发布时间】:2013-09-30 13:10:44
【问题描述】:

我不知道是什么问题,我在这里看到了很多解决方案我已经完成了,但没有帮助。这是我的代码。我在创建时从意图传递取消 id,然后传回以取消它。我已经调试过它并传递和接收到的 id 是相同的。请帮帮我,这是我的代码。

public void SetRepeatingAlarm(Context context,MyDateClass myDateClass,int reapitInterval){
    final int _id = (int) System.currentTimeMillis();
    final int minInMiliseconds = 60000;
    AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
    Intent intent = new Intent(context, AlarmManagerBroadcastReceiver.class);
    Bundle extras = new Bundle();
    extras.putParcelable("DateObj", myDateClass);           
    extras.putBoolean("IsRepeat", true);
    extras.putInt("CancelId", _id);
    intent.putExtras(extras);
    intent.setAction("RepeatAction");
    Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(System.currentTimeMillis());
    calendar.set(myDateClass.getYear(),  myDateClass.getMonth(), myDateClass.getDay(), myDateClass.getHour(), myDateClass.getMin(), 0);
    PendingIntent pi = PendingIntent.getBroadcast(context, _id, intent, PendingIntent.FLAG_UPDATE_CURRENT);       
    am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), minInMiliseconds * reapitInterval , pi);
} 

public void CancelAlarm(Context context, int id){
    Intent intent = new Intent(context, AlarmManagerBroadcastReceiver.class);
    Bundle extras = new Bundle();
    extras.putParcelable("DateObj", null);           
    extras.putBoolean("IsRepeat", true);
    extras.putInt("CancelId", id);
    intent.putExtras(extras);
    intent.setAction("BeforeAction");
    PendingIntent sender = PendingIntent.getBroadcast(context, id, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    sender.cancel();
    alarmManager.cancel(sender);
}

【问题讨论】:

    标签: android repeatingalarm


    【解决方案1】:

    您的意图不匹配,因此您的闹钟不会被取消。在CancelAlarm,改

    intent.setAction("BeforeAction");
    

    intent.setAction("RepeatAction");
    

    This 会解释原因。

    【讨论】:

    • 你能告诉我在设置setRepeating Alarm的时候,如何进入onReceive方法,调用onReceive方法多少次?
    • 你需要在你的代码中跟踪它; afaik,Android 的警报管理器不会为您保留统计信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多