我想确保从数据库中查询的值始终晚于默认值。
例如
class SetTimeFragment : Fragment(){
private lateinit var binding: FragmentSetTimeBinding
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
binding = FragmentSetTimeBinding.inflate(layoutInflater, container, false)
val dbId = 3
val defaultTime = LocalTime.now().toString()
//Set default value
binding.timeView.setText(defaultTime)
lifecycleScope.launchWhenCreated {
val itemList = withContext(Dispatchers.IO) {
//This is Database query
ObjectBox.store.boxFor(Data::class.java)[dbId]
}
// string from database e.g.12:30
val newTime = itemList.dbTimeStr
//overwrite default value with database query result
binding.timeView.setText(newTime)
}
return binding.root
}
}
目前这段代码没有问题。但是协程返回值的速度可能比默认值更快吗?我的意思是,数据库值首先查看,默认值会覆盖它。如果可能发生,我该如何预防?谢谢。
最佳答案
当在 TextView 上设置默认值时,执行数据库查询的协程甚至不会启动,因此不存在在此之前完成并写入将被默认值覆盖的值的风险
关于android - 确保从协程返回的值覆盖 android kotlin 中的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70689937/