ViewModel

大象笔记 > 标签 > ViewModel

Android ViewModel 与 LiveData 的使用场景

概述 在 activity 中监听 ViewModel 中数据的变化,当有变化时,将对应的数据显示在界面组件上 LiveData 在 ViewModel 中使用,上面监听的数据类型就是 LiveData 类型。 同时可用于 Activity 及 Fragment 间的数据共享 使用逻辑 在 activity 内新建一个 ViewModel,监听数据变化 当有数据变化时,在回调中,更新 UI View 的展示 ViewModel 内部则类似微信小程序的 data,里面定义一堆变量,监听的就是这些变量的变化,然后通过 postValue, setValue 这种类似小程序 setData 的 ...

阅读全文...

withContext(Dispatchers.IO) 与 viewModelScope.launch(Dispatchers.IO) 的区别

CoroutineScope withContext lifecycleScope viewModelScope 该如何选择 CoroutineScope, withContext, lifecycleScope, 和 viewModelScope 是 Android 中用于协程管理的不同组件和类。这些组件和类可以帮助您在 Android 应用程序中正确地使用协程。 CoroutineScope:是一个顶层接口,用于管理协程以及它们运行的线程。您可以使用GlobalScope创建全局作用域,但通常建议为每个组件或任务创建自己的范围,以便在需要终止时可以更好地控制它们。 withConte ...

阅读全文...

Jetpack Compose 配合 Room, ViewModel 操作数据库

放到一个文件中? 感觉 entity, dao, repository 可以放到一个文件中, 但是 database 还是需要独立出来,因为一个 database 可能包含多个 entity。 这样找 entity 进行修改时比较方便。 为何需要 ViewModel 屏幕在横屏、竖屏旋转切换时,Activity 会被重建。如果临时状态数据存储在 Activity 中, 横竖屏切换后,会导致状态重置,例如计数器重置,出现 bug。 所以,需要一个能保存状态的机制,于是有了 ViewModel。 为何需要 ViewModelProvider.Factory 在 Todo Demo App 中,可以 ...

阅读全文...

Android 哪些操作应该放到 ViewModel 中

权限申请是否应该放到 ViewModel 中 有此疑问的原因是,我看到权限相关的操作,需要传入 Context 参数。 private fun isLocationPermissionGranted(): Boolean { return ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED } 而 Context 只能在 Activity / Fragment / View 中得到。 ...

阅读全文...