[英]How can I use a view model, with sqlite and a broadcast receiver to update the UI?
我有一個用於測試連接性的應用程序,它有20分鍾的警報,並且必須使用唯一的代碼與服務器聯系,並且該服務器使用相同的代碼發送短信以進行確認。 我的所有組件都在工作,但是我不知道如何獲取唯一的代碼以在UI中自動更新。 警報將每個請求寫入一個sqlite數據庫,我希望使用可觀察的對象自動更新UI。
如果有任何不同,我的項目在Kotlin。
基本上,我只是不搞清楚如何“觀察” SQL數據庫的更改,或者如何讓廣播接收器和活動使用相同的可觀察對象
該答案尚未完成:
為了做我想做的事情,到目前為止,我已經實現了一個共享的prefs偵聽器,並使用它在廣播接收器和UI之間中繼數據。 我還使用新庫實現了一個可觀察對象,但是我需要在較舊的設備上運行該應用程序,因此該可觀察對象不起作用。
private val listener = SharedPreferences.OnSharedPreferenceChangeListener { prefs, key ->
val value = prefs.getString(key, "")
when(key) {
"sms" -> smsStatus.text = value
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_smschecker)
//setSupportActionBar(toolbar)
getSharedPreferences("SMS_CHECKER", MODE_PRIVATE).registerOnSharedPreferenceChangeListener(listener)
}
然后在廣播接收器中:
val editor = context.getSharedPreferences("SMS_CHECKER", Context.MODE_PRIVATE).edit()
editor.putString("sms", DateFormat.getDateTimeInstance().format(Date()))
editor.apply()
仍在進行sqlite監控。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.