首先我们要引入如下两个库,这是 Compose 为了适配 ViewModel 和 LiveData 而专门设计的库: dependencies{ implementation"androidx. lifecycle: lifecycle-viewmodel-compose: 2.6.2"implementation"androidx. compose. runtime: runtime-livedata: 1.5.1"} 传统LiveData 的用法在 Compose 中并不好使,因为传统 LiveData ...
步骤4: 在 Activity 或 Fragment 中观察 Flow 数据 接下来,我们在 Activity 或 Fragment 中观察 ViewModel 中的 Flow 数据。 importandroidx.activity.viewModelsimportandroidx.appcompat.app.AppCompatActivityimportandroid.os.Bundleimportandroidx.lifecycle.lifecycleScopeimportkotlinx.coroutines.flow.collectimportkotl...
class ExampleViewModel: ViewModel() { fun increase() { count++ } var count =0 } 1. 2. 3. 4. 5. 6. 7. 数据流Flow 概述 Compose可以在不导入依赖的情况下使用Flow,用法基本与相同。不过Compose中使用StateFlow不需要我们在协程中开启collect收集数据流,使用的时候直接使用Flow.collectAsState即可获取到S...
这里需要使用mutableStateOf创建的countKey2来触发Compose的重组,从而验证普通Int值的countKey1也能触发LaunchedEffect的执行。 2022-12-20 01:10:01.931 13167-13167zh com.lwlx.composedemo E MyLaunchedEffect: A2022-12-20 01:10:01.931 13167-13167zh com.lwlx.composedemo E MyLaunchedEffect: B2022-12-20...
viewmodel 首先我们要引入如下两个库,这是 Compose 为了适配 ViewModel 和 LiveData 而专门设计的库: 代码语言:javascript 代码运行次数:0 运行 AI代码解释 dependencies { implementation "androidx. lifecycle: lifecycle-viewmodel-compose: 2.6.2" implementation "androidx. compose. runtime: runtime-livedata: 1.5...
而使用单Activity架构,所有变换页面跳转都在Compose内部完成,可能也是出于这个原因,目前Google的示例项目都是基于单Activity+Navigation+多Compose架构的 但是使用单Activity架构也需要解决一些问题 所有的viewModel都在一个Activity的ViewModelStoreOwner中,那么当一个页面销毁了,此页面用过的viewModel应该什么时候销毁呢?
Android架构模式飞速演进,目前已经有MVC、MVP、MVVM、MVI。到底哪一个才是自己业务场景最需要的,不深入理解的话是无法进行选择的。这篇文章就针对这些架构模式逐一解读。重点会介绍Compose为什么要结合MVI进行使用。希望知其然,然后找到适合自己业务的架构模式
在Android Jetpack Compose中,MutableStateFlow 是一种用于状态管理的响应式编程工具,它属于Kotlin协程的一部分。虽然MutableStateFlow主要用于ViewModel层的状态管理,但它也可以与Compose一起使用,以实现跨组件的状态共享和响应式UI更新。 MutableStateFlow 简介 MutableStateFlow 是Kotlin 协程库中的一个类,它继承自 State...
有了数据源之后,在ViewModel里定义一个flow classFoodMenuViewModel:ViewModel() {valfoodMenuFlow = Pager( PagingConfig(pageSize =20) ) { FoodMenuPagingSource() }.flow.cachedIn(viewModelScope)} 在界面中显示分页数据 val lazyPagingItems = viewModel.foodMenuFlow.collectAsLazyPagingItems()LazyColumn(modifi...
现代Android 架构不管是 MVVM 还是 MVI ,都会用到ViewModel,在ViewModel中通过LiveData、Flow去操作数据,并在UI 层监听数据变化,当数据变化时,UI 层根据监听到的新数据做UI刷新,也就是数据驱动。 Compose中的 UI 界面刷新思路是一样的,只不过需要将得到的数据进行一下转换而已: 对于LiveData,需要将 LiveData<T> ...