AlarmManager问题

时间:2018-03-05 06:53:52

标签: android alarmmanager

我正在开发一个在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在一天中的特定时刻运行?

1 个答案:

答案 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);