我有一个脱机应用程序,可将数据存储在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
}
答案 0 :(得分:0)
您可以使用AlarmManager
在午夜唤醒电话,然后调用方法
AlarmManager API是框架提供的另一个选项 安排任务。如果应用程序需要 发布通知或在特定时间触发警报。
来源:developer