让我举一个简单的例子
class Item() {
private lateinit var property: MutableLiveData<Boolean>
init {
property.value = false
}
fun getProperty(): LiveData<Boolean> = property
fun toggleProperty() {
property.value = when (property.value) {
false -> true
else -> false
}
}
}
class ItemHolder {
private val item = Item()
private lateinit var observer: Observer<Boolean>
fun init() {
observer = Observer<Boolean> { item ->
updateView(item)
}
item.getProperty().observeForever(observer)
}
fun destroy() {
item.getProperty().removeObserver(observer)
}
fun clickOnButton() {
item.toggleProperty();
}
private fun updateView(item: Boolean?) {
// do something
}
}
对我来说LiveData
有两个好处:
活动
/片段
)传递更新。如前所述,如果您在生命周期组件(activity
/fragment
)之外使用它,并且可以随时管理交付的更新,那么您可以在没有生命周期持有者的情况下使用它,否则,它迟早会导致崩溃或数据丢失。
本文向大家介绍fragment各种情况下的生命周期?相关面试题,主要包含被问及fragment各种情况下的生命周期?时的应答技巧和注意事项,需要的朋友参考一下 由于Fragment的生命周期与Activity的生命周期有着牵扯,所以把两者的图放到一起作为对比理解。 接下来就不同情况下的Fragment生命周期做一简单介绍: Fragment在Activity中replace 新替换的Activ
我看到的所有解决方案都需要使用。但是,我想在Eclipse之外的单个文件上使用CDT解析器。那有什么办法吗?
问题内容: 我正在编写一个脚本,该脚本需要确定Windows上文件所有者的用户名。 虽然我找到了使用pywin32的解决方案,但是由于我不想添加模块依赖项,因此我很犹豫使用它。 该脚本将为python 2.6编写,并且必须同时在32位和64位平台上运行。 我想知道是否有其他方法(也许使用ctypes)来确定此信息 问题答案: 以下使用ctypes进行调用。最初,它遵循问题中链接的代码片段,但通常比
下面是一个资源借用的例子: fn main() { let a = 100_i32; { let x = &a; } // x 作用域结束 println!("{}", x); } 编译时,我们会看到一个严重的错误提示: error: unresolved name x. 错误的意思是“无法解析 x 标识符”,也就是找不到 x , 这是因为像很多编
问题内容: 我想学习Angular 2并切换到使用它的应用程序,但是,我在使用TypeScript时遇到问题。 在当前环境中,我不能使用使用transpiler /编译器。我目前只需要运行node.js可执行文件(node.exe),而不必运行完整的node.js应用程序,也不需要运行npm。Angular 2是用TypeScript编写的,因此在将其发送到浏览器之前,需要先将其编译为JavaSc
问题内容: 我从Vaadin开始,我想知道在不使用maven的情况下在NetBeans中使用此框架是否可行。原因是使用maven的项目需要很长时间才能下载依赖项,并且由于超时连接问题而无法运行。 我已经下载了“多合一”文件,并尝试按照这些README.txt文件的说明进行操作: 将除vaadin-client和vaadin-client-compiler以外的所有vaadin- *文件复制到项目中