0

我有一个用于测试连接性的应用程序,它有 20 分钟的警报,并且必须使用唯一代码联系服务器,并且服务器会发送具有相同代码的短信进行确认。我的所有组件都在工作,但我不知道如何让唯一代码在 UI 中自动更新。警报将每个请求写入一个 sqlite 数据库,我希望它能够使用 observable 自动更新 UI。

如果这有什么不同的话,我的项目就在 Kotlin 中。

基本上,我只是不知道如何“观察” sql 数据库的更改或如何让广播接收器和活动使用相同的 observable

4

1 回答 1

0

这个答案还不完整:

为了做我想做的事,到目前为止,我已经实现了一个共享的 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 监控。

于 2017-09-15T02:59:10.880 回答