Это относительно простая задача, которую можно выполнить в фоновом режиме, когда она может быть просто выполнена при запуске приложения. Реализация и поддержание фоновых задач сами по себе - большая работа, поэтому, если вам не нужно ничего делать в фоновом режиме при изменении даты (например, отправка уведомления или отправка этой информации бэкэнду и т. Д. c). ), Я бы посоветовал сделать это простым и на уровне пользовательского интерфейса. Вы можете сделать что-то вроде этого в вашем основном Activity
или переопределить ваш Application
класс и сделать это там):
// Build today date and current month strings which will be used as keys
String todayDate = getDateFromFormat("dd-MM-yyyy");
String currentMonth = getDateFromFormat("MM-yyyy");
// Try to get the remaining limit from sharedpreferences, and give them default
// values if they don't exist yet
int remainingForToday = sharedPreferences.getInt(todayDate, 5);
int remainingThisMonth = sharedPreferences.getInt(currentMonth, 30);
// When the user clicks on the button, decrement and save the remaining
sharedPreferences.edit().putInt(todayDate, remainingForToday - 1).apply();
sharedPreferences.edit().putInt(currentMonth, remainingThisMonth - 1).apply();
// Utility function to get the date time strings using native Java classes
private String getDateFromFormat(String format) {
Calendar today = Calendar.getInstance();
SimpleDateFormat formatter = new SimpleDateFormat(format);
return formatter.format(today.getTime());
}
То, что делает выше, делает key
из текущей даты и текущий месяц, который будет уникальным для каждого дня и каждого месяца. Просто проверьте оставшиеся ограничения на основе этого.