Как удалить SharedPreferences автоматически через месяц?

Я хочу автоматически удалить SharedPreferences, если они существуют, через месяц. Никаких решений найти не смог. Возможно ли это сделать?

Большое спасибо.

посмотрите сервисы и трансляции. через месяц удалите общие прив.

letsCode 04.01.2019 18:14

Используйте AlarmManager

Rishabh Rawat 04.01.2019 18:24
0
2
262
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

long installed = context
    .getPackageManager()
    .getPackageInfo(context.getPackag‌​eName(), 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 () для ваших файлов. Сделанный.

Другие вопросы по теме