我有一个用于测试连接性的应用程序,它有 20 分钟的警报,并且必须使用唯一代码联系服务器,并且服务器会发送具有相同代码的短信进行确认。我的所有组件都在工作,但我不知道如何让唯一代码在 UI 中自动更新。警报将每个请求写入一个 sqlite 数据库,我希望它能够使用 observable 自动更新 UI。
如果这有什么不同的话,我的项目就在 Kotlin 中。
基本上,我只是不知道如何“观察” sql 数据库的更改或如何让广播接收器和活动使用相同的 observable
我有一个用于测试连接性的应用程序,它有 20 分钟的警报,并且必须使用唯一代码联系服务器,并且服务器会发送具有相同代码的短信进行确认。我的所有组件都在工作,但我不知道如何让唯一代码在 UI 中自动更新。警报将每个请求写入一个 sqlite 数据库,我希望它能够使用 observable 自动更新 UI。
如果这有什么不同的话,我的项目就在 Kotlin 中。
基本上,我只是不知道如何“观察” sql 数据库的更改或如何让广播接收器和活动使用相同的 observable
这个答案还不完整:
为了做我想做的事,到目前为止,我已经实现了一个共享的 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 监控。