当离线应用中的日期更改时刷新数据

时间:2018-12-29 13:34:43

标签: android android-room android-livedata

我有一个脱机应用程序,可将数据存储在RoomDatabase中。仅在用户操作(单击按钮或微调器选择更改时)后才插入新数据。数据作为LiveData检索。 在我的主要活动中,我仅显示当天的数据。但是,当日期更改且应用仍在后台而不被系统杀死时,我的问题就会出现。在这种情况下,活动仍会显示前一天的数据。 当前日期与活动中显示的日期不同时,如何实施刷新? 当应用被杀死时,我在onCreate中有一个方法尝试插入新行(使用onConflict忽略),并且该方法有效。但是,如果有更好的方法,我欢迎您提出建议。

Dao(我只得到日期与通过日期匹配​​的行)

@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 个答案:

答案 0 :(得分:0)

您可以使用AlarmManager在午夜唤醒电话,然后调用方法

  

AlarmManager API是框架提供的另一个选项   安排任务。如果应用程序需要   发布通知或在特定时间触发警报。

来源:developer