簡體   English   中英

如何使用帶有sqlite和廣播接收器的視圖模型來更新UI?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM