计划的警报未正确触发

时间:2013-02-19 10:05:23

标签: android alarmmanager android-alarms repeatingalarm

我的应用程序会在特定时间安排多个警报。应用程序启动时会安排这些警报。 (每天有5个警报,每周发出35个警报)......

我已通过日志验证这些警报是在应用程序启动时安排的。

问题是,当我开始测试我的应用程序时,7个警报完全正常。但是第8次警报没有被触发。我已经通过让我的设备保持超过1天来测试这种情况。如何调试此行为以及阻止触发警报的可能原因是什么。

编辑:

日程安排代码:

try {
    if (info != null) {
        Calendar c = Calendar.getInstance();
        c.set(Calendar.YEAR, year);
        c.set(Calendar.MONTH, month);
        c.set(Calendar.DAY_OF_MONTH, day);
        c.set(Calendar.HOUR_OF_DAY, info.getHour());
        c.set(Calendar.MINUTE, info.getMinute());
        c.set(Calendar.SECOND, 0);

        Intent intent = new Intent(context, AlarmReceiverActivity.class);
        intent.putExtra("name", info.getPrayerName());
        intent.putExtra("sound", soundType);

        intent.putExtra("time", formatTimeClock(context, info.getHour(), info.getMinute()));

        PendingIntent pendingIntent = PendingIntent.getActivity(context, alarmId, intent, PendingIntent.FLAG_CANCEL_CURRENT);

        AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
        am.set(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), pendingIntent);
    }
} catch (Exception e) {
    Log.e("ALarmSchedularManager", e.getMessage());
}

2 个答案:

答案 0 :(得分:2)

  

如何调试此行为

使用adb shell dumpsys alarm查看您的预定闹钟以及接下来要调用的闹钟。

  

阻止触发警报的可能原因是什么

您的代码没有出现,考虑到时间已经过去的可能性,但可以在您上面显示的代码段之外处理。

答案 1 :(得分:1)

希望下面的代码会有所帮助,我在我的应用程序中使用了相同的代码。这里在AlarmManager类中传递的用于重复的参数应该是24 * 60 * 60 * 1000

AlarmManager am = (AlarmManager) ct.getSystemService(Context.ALARM_SERVICE);         
Intent intent1 = new Intent(ct, TimeAlarm.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(ct, 0,intent1, PendingIntent.FLAG_CANCEL_CURRENT);

Date curr=new Date();
curr.setHours(h);
curr.setMinutes(m);
c.setTime(curr);
c.set(Calendar.SECOND, 0);

Calendar c1 = Calendar.getInstance();
am.setRepeating(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(),24*60*60*1000, pendingIntent);

代替硬编码操作(24 * 60 * 60 * 1000),您可以使用AlarmManager.INTERVAL_DAY。检查这个间隔最多1天http://developer.android.com/reference/android/app/AlarmManager.html#INTERVAL_DAY

相关问题