У меня есть виджет приложения, содержащий список. Когда я щелкаю элемент, он обновляет базу данных о том, что эта задача завершена, и скроет ее в виджете приложения. Проблема в том, что при обновлении onDataSetChange()
из RemoteViewFactory
загружает базу данных с неверными данными. Я действительно запуталась. Вот результат
resultTest: from widget provider data is true
resultTest: data is from app widget factory false
Вы можете видеть, что когда я обновляю его, я проверяю, обновлена ли база данных. в первом тесте результата он дает true, но после вызова notifyAppWidgetViewDataChanged
результат в базе данных ложный. я запутался. Почему он это делает?
Вот мой код в onreceive в моем классе AppWidgetProvider
override fun onReceive(context: Context, intent: Intent) {
when(intent.action) {
ACTION_SAMPLE -> {
val repositoryHelper = context.applicationContext as RepositoryHelper
repo = WidgetRepo(repositoryHelper)
repo?.let {
val remotePresenter = RemotePresenterImp(it,this)
val id = intent.getLongExtra("ID", 0)
remotePresenter.marker(id, true){
val testCheck = repo?.getTask()
testCheck?.forEach {
Log.d("resultTest","from widget provider data is ${it.marked}") --> data is change to true
}
val mgr = AppWidgetManager.getInstance(context)
val appWidgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID)
mgr.notifyAppWidgetViewDataChanged(appWidgetId, R.id.listTask)
}
}
}
super.onReceive(context, intent)
}
Тогда на моем RemoteViewFactory
override fun onDataSetChanged() {
val repo = WidgetRepo(repositoryHelper)
repo.let {
presenter = WidgetPresenter(it)
val result = presenter.getTask()
result?.forEach {
Log.d("resultTest","data is from app widget factory ${it.marked} "). ---> still false
}
}
}
Любые идеи относительно того, почему мои данные в RemoteViewFactory не меняются?