主页

关于Compose中的SideEffect

1、什么是Compsoe副作用根据官方文档https://developer.android.com/jetpack/compose/side-effects?hl=zh-cn 副作用是指发生在Composeable可组合函数作用域之外的应用状态的变化。由于可组合项的生命周期和属性(例如不可预测的重组、以不同顺序执行可组合项的重组或可以舍弃的重组),可组合项在理想情况下应该是无副作用的 但是很多时

Composable曝光和反曝光实现

1、Composable曝光和反曝光实现在Compose开发过程中,需要在进入退出重组以及View可见的场景进行@Composable的曝光和反曝光,进入退出重组的话可以通过LaunchedEffect和DisposableEffect来监听,那View可见的场景就得通过Lifecycle来实现了,如下所示,可以统一在DisposableEffect里面通过生命周期监听来处理: 123456789

MviComposeExtensions

1、MviComposeExtensions接上篇MVI架构实践:MVI架构实践 针对Compose场景进行扩展,方便在Compose里面使用MVI架构: 12345678910111213141516@Composablefun <VM : BaseMviViewModel<S, I>, S : MviUiState, I : MviUiIntent> VM.collec

MVI架构实践

为啥要用MVI架构为啥要从MVVM过渡到MVI,结合实际开发经验,个人总结以下几点: 1、从MVVM中的多个LiveData挨个观察改为一个State统一观察,当然如果我们需要观察State里面单独的某个字段,这个也是很方便做到的,下面的代码会讲到2、之前MVVM架构中,VM会开放很多方法给View调用;在MVI架构中,只有一个SendIntent入口,因此在一开始我们就可以把所有支持的的Int

kotlin接口支持SAM转换

定义一个kotlin接口,如下所示: 123interface IReportPlayerEventListenerFactory { fun getPlayerEventListener(mediaPlayer: Any?): ITVKPlayerEventListener?} 这个接口使用的时候,是只能使用object匿名内部类的方式的,是没法使用SAM转换的:那这

种植小番茄

阳台种植小番茄,记录番茄的生长过程,5.5号开始种植种子: 6.2 号第17天,幼苗已经长出来了: 6.17 号第34天,长势还不错,进行了移栽,保证每个盆只保留1到2棵: 6.25 号第42天,可以看到一周不见,这俩盆里面的小番茄已经长高一大截了 上面这一盆里面有两棵,考虑土壤可能不够,番茄根系比较发达,因此移栽到了下面的大盆里面,对这俩棵寄予了殷切的希望~~,快快长大吧 最后是

种辣椒

阳台种植辣椒,记录辣椒的生长过程 6.19 update:由于种植过程不理想,辣椒苗一直长不大,就放弃了辣椒种植,专心小番茄的种植:种植小番茄

深圳大鹏7娘山——2021.8.22

风景无敌(function(){var player = new DPlayer({"container":document.getElementById("dplayer1"),"autoplay":true,"theme":"#FADFA3","loop":true,"video":{"url":"/resources/video/seven_mom_moutain_one.mp4","pic

WebViewFactory.getProvider耗时问题的一种解决思路

背景最近在做外部拉起视频底层页整个链路上的一个耗时优化,发现在这个过程中有一个地方挺耗时的,如下所示: 可以看到这个WebViewFactory.getProvider()方法耗时了240ms! 找到WebViewFactory的源码如下所示: 12345678910111213141516171819202122232425262728293031323334353637383940414243