我正在开发一个在SharedPrefernces
中保存一些键值的应用程序。但我希望在03:00(03:00 AM)使用INTERVAL_DAY
根据他们的ID从共享偏好中删除一些密钥。通过阅读一些块和关于AlarmManager的stackoverflow
回答,我现在正在尝试使用此代码,
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 3);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
Intent intent = new Intent(context, ClearSharedPreferences.class);
intent.putExtra("id", ID);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, ID, intent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
if (alarmManager != null) {
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);
}
一切正常,但问题在于,而不是在晚上03:00运行。我正在设置它后,AlarmManager
正在运行2-3分钟。
那么,问题是如何设置AlarmManager
在一天中的特定时刻运行?
答案 0 :(得分:0)
像这样设置闹钟:
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 14);
calendar.set(Calendar.MINUTE, 30);
if (calendar.before(Calendar.getInstance())) {
calendar.add(Calendar.DATE, 1);
}
alarmMgr.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
AlarmManager.INTERVAL_DAY, alarmIntent);