Обновление данных при смене дня в автономном приложении

У меня есть автономное приложение, которое хранит данные в RoomDatabase. Новые данные вставляются только после действий пользователя (при нажатии кнопки или изменении выбора счетчика). Данные извлекаются как LiveData. В своей основной деятельности я показываю только данные за текущий день. Но моя проблема возникает, когда день меняется, и приложение все еще находится в фоновом режиме, не убитое системой. В этой ситуации активность все еще показывает данные за предыдущий день. Как реализовать обновление, если текущая дата отличается от даты, показанной в активности? Когда приложение было убито, у меня есть метод в onCreate, который пытается вставить новую строку (с игнорированием onConflict), и это работает. Но если есть лучший способ, я открыт для предложений.

Дао (я получаю только строку с датой, которая соответствует пройденной дате)

@Query("SELECT * from coffee_productivity WHERE date LIKE :todayDate")
fun getTodayData(todayDate: String): LiveData<CoffeeProductivityData>

вместилище

private var mTodayData: LiveData<CoffeeProductivityData> = mCoffeeProductivityDao.getTodayData(mUtilities.getTodayDate())

// Wrapper for getting current day data
fun getTodayData(): LiveData<CoffeeProductivityData> {
    return mTodayData
}

ViewModel

private val mTodayData: LiveData<CoffeeProductivityData> by lazy {
    mRepository.getTodayData()
}

// Get LiveData for today coffees and productivity
fun getTodayData(): LiveData<CoffeeProductivityData> {
    return mTodayData
}

1 ответ

Ты можешь использовать AlarmManager разбудить телефон в полночь, а затем позвонить

AlarmManager API - это еще одна опция, которую платформа предоставляет для планирования задач. Этот API полезен в тех случаях, когда приложению необходимо опубликовать уведомление или включить тревогу в определенное время.

Источник: разработчик

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