- 博客(16)
- 资源 (2)
- 收藏
- 关注
原创 Make和Rebuild区别
Make: only compile the parts changed, so it’s fast. please use it constantly, frequently, and daily.tip: some projects need cleaning everytime before hit the install-button, otherwise there will be an error during compile. That’s because of the intermedi
2024-07-06 18:28:21 207
原创 多线程_交替打印_synchronized wait(), notify()
代码比较简单,有海量的文章用来说明wait(), notify()的用法。不过需要强调的是:notify()方法执行后,被通知到的线程并不是立即执行,而是在notify()后面的代码执行完后,被通知到的线程才会从wait()处继续执行。换句话说,锁不会立即就释放掉。两个线程,交替打印log。
2023-12-26 17:41:58 371
原创 ProduceState的使用
当手指在左侧选择不同的颜色时,也就是selectedColor会发生发变,相应的backgroundColor也会变化,产生了联动效果。运行后,OutlineButton上的数字增长100次。同样的LiveData也。感觉很专业对不对,其实里面。有一本正经的胡说八道之嫌。
2023-12-08 18:09:34 542
原创 compose状态提升
先来设想一种场景,产品经理今天说(当然还会有明天)实现一个简单的需求:在页面放置一个button,用户每点一次就加1,啪!这简单啊,把昨天的copy and paste, then num+=10, 这不就finish your today’s task了。4个大了出现在眼前:看完官方的文档,你若有所悟,想着能否将之前的杰作改改,改成Masterpiece。按照上面的这种方式写需求,完全可以,是不是。而且还显的代码量大,是不是。第三天,没啥事干,当天的工作日志该咋写呢?你按下了显示器的电源键,下班回家。
2023-12-07 17:19:58 173
原创 SideEffect用法
但由于compose框架智能重组的机制,组合函数里不一定会执行每一个元素代码,在当前例子中,第二个button,也就是竖向列表最下方的button每次都会重组,而SideEffect不会执行。该组合函数所描述的页面也很简单:有两个button, 点击button会改变观察对象btnColor的值,重组也随之发生。在同级别的组件中对btnColor进行读取即可。SideEffect的API里不像其他函数一样有key的存在。对状态的读取会使得在发生重组时该部分组件得到执行。,effect才会被执行到。
2023-12-07 16:19:50 83
原创 DisposableEffect应用场景
从中可以看出,需要我们实现onDispose方法,当key发生变化或compose函数退出后,onDispose会被调用,释放一些我们所引用的资源。实际应用中eg:(此处引用了官方的代码片断)再看看直接写出来的样子,不加任何业务代码。
2023-12-04 16:01:00 399
原创 rememberUpdatedState使用说明
页面说明:有两个btn,点击任何一个就会重组,会将btnColor的值改变,最终在LauchedEffect中delay几秒后将改变后的值打印出来。
2023-12-03 23:40:41 398 3
原创 Hilt的基本用法
的作用,通过自定义注解,获取到被注解的类/方法/变量信息,从而实现在两个独立的Module之前实现Activity跳转的功能。如果没了解过Dagger,那就直接开始学Hilt吧,比Dagger容易上手使用,而且Hilt是基于Dagger2开发的。Hilt可以通过注解的方式将所需对象传入到另一个类当中,避免了我们自己new对象,但前题是要告诉Hilt怎么去创建对象。可以明显看到,用@Inject注解修饰了主构造方法,这就告诉Hilt,用该构造方法来创建该类的对象供其他地方调用。
2023-09-15 19:10:23 163
原创 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 226
原创 callbackFlow与suspendCancellableCoroutine的使用
如果是多次回调就用callbackFlow,一次回调就用suspendCancelableCoroutine。通过上面的例子,很容易理解这里所说的多次和单次回调,所以在实际使用当中应根据具体业务逻辑合理选择。那什么又是多次回调?
2023-08-24 15:59:20 269 1
原创 Kotlin热流(SharedFlow/StateFlow)与冷流(Flow)的一些思考
那么现在的问题是:它们的应用场景是什么?等)出现时才会被执行。的参与就可独立执行。
2023-08-20 23:43:34 217
原创 AndroidStudio导入Github项目运行异常
从github拉下来的代码,无论是下载后再导入还是直接在androidStudio中导入,发现运行不了,尤其是对于Google的一些样例项目,其中会包含。经过以上操作,可以看到该工程下的所有项目都可正常运行。
2023-08-04 22:54:20 522
原创 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 1167
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人