将警报设置为在特定时间每天开启 - 仅限未来

时间:2014-05-27 12:28:38

标签: android android-alarms

以下代码每天凌晨4点(设备时间)触发

Intent serviceIntent = new Intent(getApplicationContext(), MyService.class);
    serviceIntent.putExtra(MyService.ARGUMENT_ACTION_TYPE,MyService.ACTION_DAILY_SYNC);
    PendingIntent pendingService = PendingIntent.getService(getApplicationContext(), 0, serviceIntent, 0);
    AlarmManager alarmManager = (AlarmManager)getApplicationContext().getSystemService(Context.ALARM_SERVICE);
    Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(System.currentTimeMillis());
    calendar.set(Calendar.HOUR_OF_DAY,4);
    calendar.set(Calendar.MINUTE,randInt(0,59));


    alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP,
            calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingService);

以下代码效果很好,但问题是它也会立即触发(可能是因为时间已经过去了)。

如何将警报设置为仅在将来日期触发? 启动在我的Application类中。

我要实现的一种方法是检查设备时间是否在凌晨4点之后,并在日历中添加1天。 并在我的应用程序类中检查每次是否在我的共享首选项中使用一些布尔值启动警报。

这是正确的方法还是有更好的方法使用AlarmManager方法?

感谢

0 个答案:

没有答案