Как очищать sharedPreferences каждый новый день
Нужно очищать sharedPreferences каждый день. Пробовал гуглить, но не нашел.
Думаю, что можно как-то сохранять дату (день, год, месяц) в sharedPreferences и при запуске приложения каждый раз сравнивать с сохраненной и если они не равны, то удалять все по ключам из sharedPreferences и создавать уже новую дату. Но не знаю как получить дату в таком формате, чтобы можно было без проблем сравнить.
Ответы (1 шт):
Важно решить, когда по вашему начинается новый день, например будем считать, что новый день начинается в полночь.
fun getLastValidTimestamp(): Long {
val day = Calendar.getInstance()
day[Calendar.MILLISECOND] = 0
day[Calendar.SECOND] = 0
day[Calendar.MINUTE] = 0
day[Calendar.HOUR_OF_DAY] = 0
return day.time.time
}
Этот метод вернет временную метку полночи, которая уже была.
Что бы решить наступил ли новый день нужно:
- Сохранить результат метода getLastValidTimestamp(). (Только при первом запуске, когда у вас дефолтное значение)
- При каждом запуске сравнить сохраненный результат с новым
Пример условия:
fun isNewDay(lastValue: Long): Boolean {
return getLastValidTimestamp() > lastValue
}
Где lastValue последний сохраненный результат из пункта 1.
- В случаи если метод
isNewDayвернулtrue, необходимо повторить пункт 1.
Пример на java
public long getLastValidTimestamp() {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.MILLISECOND, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.HOUR_OF_DAY, 0);
return calendar.getTime().getTime();
}