自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 【无标题】

记录一些在学习Swift中的遇到的知识点,方便参考。

2024-02-02 18:43:02 118

原创 多线程_交替打印_synchronized wait(), notify()

代码比较简单,有海量的文章用来说明wait(), notify()的用法。不过需要强调的是:notify()方法执行后,被通知到的线程并不是立即执行,而是在notify()后面的代码执行完后,被通知到的线程才会从wait()处继续执行。换句话说,锁不会立即就释放掉。两个线程,交替打印log。

2023-12-26 17:41:58 333

原创 snapshotFlow的使用总结

【代码】snapshotFlow的使用总结。

2023-12-18 13:42:57 189 1

原创 ProduceState的使用

当手指在左侧选择不同的颜色时,也就是selectedColor会发生发变,相应的backgroundColor也会变化,产生了联动效果。运行后,OutlineButton上的数字增长100次。同样的LiveData也。感觉很专业对不对,其实里面。有一本正经的胡说八道之嫌。

2023-12-08 18:09:34 437

原创 compose状态提升

先来设想一种场景,产品经理今天说(当然还会有明天)实现一个简单的需求:在页面放置一个button,用户每点一次就加1,啪!这简单啊,把昨天的copy and paste, then num+=10, 这不就finish your today’s task了。4个大了出现在眼前:看完官方的文档,你若有所悟,想着能否将之前的杰作改改,改成Masterpiece。按照上面的这种方式写需求,完全可以,是不是。而且还显的代码量大,是不是。第三天,没啥事干,当天的工作日志该咋写呢?你按下了显示器的电源键,下班回家。

2023-12-07 17:19:58 148

原创 SideEffect用法

但由于compose框架智能重组的机制,组合函数里不一定会执行每一个元素代码,在当前例子中,第二个button,也就是竖向列表最下方的button每次都会重组,而SideEffect不会执行。该组合函数所描述的页面也很简单:有两个button, 点击button会改变观察对象btnColor的值,重组也随之发生。在同级别的组件中对btnColor进行读取即可。SideEffect的API里不像其他函数一样有key的存在。对状态的读取会使得在发生重组时该部分组件得到执行。,effect才会被执行到。

2023-12-07 16:19:50 41

原创 DisposableEffect应用场景

从中可以看出,需要我们实现onDispose方法,当key发生变化或compose函数退出后,onDispose会被调用,释放一些我们所引用的资源。实际应用中eg:(此处引用了官方的代码片断)再看看直接写出来的样子,不加任何业务代码。

2023-12-04 16:01:00 286

原创 LaunchedEffect与rememberCoroutineScope的使用

这两个都为可组合函数,所以都只能在可组合函数中被调用。

2023-12-04 15:29:02 173

原创 rememberUpdatedState使用说明

页面说明:有两个btn,点击任何一个就会重组,会将btnColor的值改变,最终在LauchedEffect中delay几秒后将改变后的值打印出来。

2023-12-03 23:40:41 120 2

原创 Hilt的基本用法

的作用,通过自定义注解,获取到被注解的类/方法/变量信息,从而实现在两个独立的Module之前实现Activity跳转的功能。如果没了解过Dagger,那就直接开始学Hilt吧,比Dagger容易上手使用,而且Hilt是基于Dagger2开发的。Hilt可以通过注解的方式将所需对象传入到另一个类当中,避免了我们自己new对象,但前题是要告诉Hilt怎么去创建对象。可以明显看到,用@Inject注解修饰了主构造方法,这就告诉Hilt,用该构造方法来创建该类的对象供其他地方调用。

2023-09-15 19:10:23 68

原创 APT在Android Kotlin项目中的使用(APT is used in Android project written by Kotlin language)

回到标题,假设有AMoudule 和BMoudle两个模块,没有依赖关系,且由不同的人在维护。既然这样也行,哪APT的优点在哪里?ok,试想一下,如果不同module间activity跳转都要通过反射来实现,随着项目的日益变大,页面数量的不断增加,人员的不断更替,将全类名以硬编码的方式写入项目中有没有什么不妥?通常能看到很多技术名词,且大多都是英文缩写,所以要做的第一步不是一头扎入其中了解具体怎么做,而是翻译一下,看看缩写代表什么意思。不难看出,被注解类的类名,方法参数,包含的一些元素…

2023-09-13 18:23:32 139

原创 callbackFlow与suspendCancellableCoroutine的使用

如果是多次回调就用callbackFlow,一次回调就用suspendCancelableCoroutine。通过上面的例子,很容易理解这里所说的多次和单次回调,所以在实际使用当中应根据具体业务逻辑合理选择。那什么又是多次回调?

2023-08-24 15:59:20 156 1

原创 Kotlin热流(SharedFlow/StateFlow)与冷流(Flow)的一些思考

那么现在的问题是:它们的应用场景是什么?等)出现时才会被执行。的参与就可独立执行。

2023-08-20 23:43:34 142

原创 AndroidStudio导入Github项目运行异常

从github拉下来的代码,无论是下载后再导入还是直接在androidStudio中导入,发现运行不了,尤其是对于Google的一些样例项目,其中会包含。经过以上操作,可以看到该工程下的所有项目都可正常运行。

2023-08-04 22:54:20 259

原创 android_防止重复点击

android_防止重复点击1.扩展View方法fun View.setOnDeBounceClickListener(l: (View)-> Unit){ setOnClickListener { v-> if (!Utils.isFastDoubleClick()) { l.invoke(v) } }}2.直接使用: tv.setOnDeBounceClickListener { //业务

2021-10-28 14:40:29 1115

提示
确定要删除当前文章?
取消 删除