Я хочу автоматически удалить SharedPreferences, если они существуют, через месяц. Никаких решений найти не смог. Возможно ли это сделать?
Большое спасибо.
Используйте AlarmManager
long installed = context
.getPackageManager()
.getPackageInfo(context.getPackageName(), 0)
.firstInstallTime
;
public long firstInstallTime
Время, когда приложение было впервые установлено. Единицы согласно System.currentTimeMillis().
Теперь вы можете сравнить две даты и получить разные месяцы, используя Григорианский календарь
после того, как у вас будет один месяц другого, делайте, как хотите ... очистите sharedPrefrence.edit().clear().commit()
По-разному.
Самый простой способ - удалить его, когда пользователь запускает приложение. Когда приложения созданы, вы проверяете SharedPreferences на время последнего обновления. Если он равен нулю (в первый раз), вы сохраняете текущее время в миллисекундах как долгое время. Если он не равен нулю, вы читаете его и сравниваете с текущим временем. Если осталось меньше месяца, ничего не делать. Если прошло больше месяца, вы очищаете общие настройки и, очистив их, вставляете новое время.
Что-то типа:
long lastUpdate = sharedPreferences.getLong(LAST_UPDATE, -1);
if (lastUpdate == -1) {
//First time
sharedPreferences.edit().putLong(LAST_UPDATE, System.currentTimeMillis()).apply();
} else {
boolean isMoreThanAMonth = //Here you should do the math. it depends, you want to consider a month like 30 days, or you want to know if it was in another month... somehthing like that
if (isMoreThanAMonth) {
sharedPreferences.edit().clear().apply()
}
}
Конечно, если вы хотите очистить SharedPreferences, даже если пользователь не открывает приложение, вам следует использовать Сервис. Это более сложно и дорого для ОС, поэтому вам следует попробовать выбрать первый, если он соответствует вашим требованиям.
Один из возможных способов,
1. получите экземпляр календаря.
2. Получите максимальный день месяца.
3. Сохраните в строке var1 строку в формате дд / мм / гггг.
.
4. Получить текущую дату из некоторого объекта календаря и сохранить таким же образом из пункта 3, но в var2.
5. Сравните две строки.
6. Если совпадение, то это будет последний день месяца и вызовите delete () для ваших файлов.
Сделанный.
посмотрите сервисы и трансляции. через месяц удалите общие прив.