重启后报警未按正确时间触发

时间:2012-09-05 11:07:50

标签: android android-alarms

我正在使用AlramManager来使用以下方法设置setAlarm:

    public static void scheduleAlarmReceiverOnce(Context context,String did,long time) {
    AlarmManager alarmMgr = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    PendingIntent pendingIntent =PendingIntent.getBroadcast(context, 0, new Intent(context, AlarmReciever.class),PendingIntent.FLAG_CANCEL_CURRENT);
    alarmMgr.set(AlarmManager.RTC_WAKEUP,time, pendingIntent);
}

我在这里打电话

        Utils.scheduleAlarmReceiverOnce(this, did,Calendar.getInstance().getTimeInMillis()+30000);

它的工作正常意味着闹钟正好在我的广播中正好显示,我正在显示一个完全显示在30秒的吐司。 我的问题是当我重新启动或重新安装时,我正在计算并减去浪费的时间并再次安排警报,但是剩下的时间......我的启动接收器我再次启动服务,重新安排警报。

            Utils.scheduleAlarmReceiverOnce(this, did,Calendar.getInstance().getTimeInMillis()+leftime);

我正确地离开的时间......正好在17000或20000左右,e;大约20秒 但我的警报会立即触发,而不会等待20秒..

帮助PLZ .. 在此先感谢

2 个答案:

答案 0 :(得分:0)

最简单的解决方案是在您设置为闹钟的Sharedprefernce / Database中存储时间,并在重新启动设备时再次设置该时间。

因此,您在重启前设置的确切时间会调用警报。

在您当前的代码中尝试使用此功能。

PendingIntent pendingIntent =PendingIntent.getBroadcast(context, 0, new Intent(context, AlarmReciever.class),0);

答案 1 :(得分:0)

Okk我得到了答案...逻辑是正确的只是我的日期减法传递了一个负值,我试图添加到Calendar.getInstance()。getCurrentTimeMillis ...