各位 Android 大佬, 2024 年了 Jetpack Compose 现在用的多了吗,有没有什么硬伤?

2024-08-14 09:38:01 +08:00
 monkeylmj

比如,由于生态问题很难实现某些需求、性能方面体验很差等等。

有没有老哥现在完全切到 compose 开发了,谈谈是什么感觉,有没有从 java 切到 kotlin 的痛快感。

10176 次点击
所在节点    Android
56 条回复
maokg
2024-08-14 09:55:49 +08:00
frameworker ,无聊的时候看 https://jetpackcompose.cn/ ,写了一下还是很爽的,但我的 UI 场景不多,自定义 view 都很少写...无法给出具体的槽点
RightHand
2024-08-14 09:59:04 +08:00
能用,但, 同时中不能有是能跑就行。藏了太多东西,学习成本有点高。
location123
2024-08-14 10:00:23 +08:00
使用 Compose 写过桌面端的小工具 还是很爽的 kotlin 一把梭
ruzhan123
2024-08-14 10:00:44 +08:00
画 UI flutter 就挺好的
monkeylmj
2024-08-14 10:17:53 +08:00
最好是在生产项目中的使用经验~
LLLeo
2024-08-14 10:32:36 +08:00
@monkeylmj 目前有在用,目前遇到最大问题就是数据量大的列表效果不是很好,ViewPager 控件切换体验不好,其他都不错,写 UI 很爽很快。
新项目没有夸端的需要建议使用
Tlaster
2024-08-14 10:50:15 +08:00
从 alpha 就开始用到现在了,写了不少纯 Compose 应用,最近的例子: https://github.com/DimensionDev/Flare
新应用可以直接纯 Compose
槽点就是:写 Compose 是完全不同的思维范式,如果之前写 View 的话,很容易用 View 的思维去写 Compose ,然后踩到 Compose 的坑,有一些会导致性能问题,最后怪 Compose 性能差,但实际上 Compose 的性能现在( 1.7 )已经完全不差了。
不过 Compose 一定需要开 R8 ( isMinifyEnabled = true ),不开的话性能确实不行
cJ8SxGOWRH0LSelC
2024-08-14 10:51:12 +08:00
@location123 #3 资源占用怎么样? 比 javafx 高吗?
monkeylmj
2024-08-14 11:01:11 +08:00
@Tlaster 大佬厉害,学习学习。isMinifyEnabled = true 不就是开代码混淆压缩吗,为啥还会影响到性能。还有楼上说的数量大的时候列表效果不好,大佬遇到过吗?
winterbells
2024-08-14 11:06:23 +08:00
本来兴致勃勃把公司 app 往这上面转,UI 都重构了几个页面了。现在 app 半死不活的也没空管它了

踩过但是填了的两个大坑,resource 和 navigation ,这两个最近都加上了( compose-multiplatform )。

抽屉( drawer )之前有过不同平台样式不一样,只有安卓上点开后阴影正常(可能早期版本,现在修好了吧

还有编译问题、api 乱改(现在不知道改不改了)

lazylist 的性能也不知道怎么样了,自己写着完还可以,我也好奇有没有哪家公司用这个
Tlaster
2024-08-14 11:24:56 +08:00
@monkeylmj isMinifyEnabled = true 会开启 R8 代码优化( https://developer.android.com/build/shrink-code ),因为 Compose 也是用 Kotlin 写的,所以也会享受到 R8 代码优化带来的好处。
数量大的列表性能问题以前踩过坑,现在基本上没有了,有几个原因:1. 列表项目的 Composable 带了太多状态,最好列表项目是不带状态的。2. Composable 里面有耗时操作。举个例子的话,HTML 解析不要在 Compose 里面做,要在 Model 里面就处理掉,Compose 只做富文本渲染。
说白了就是不要在 Compose UI 里面做业务逻辑,这些应该是上层(比如 ViewModel )的职责,Compose UI 就只要做渲染就行。
location123
2024-08-14 11:32:04 +08:00
@StinkyTofus 没用 javafx 写过 我是 mac 系统 做日志分析用的 程序刚启动占用 200Mb 左右 分析日志时占用 300Mb 在接受范围内 毕竟方便了很多
location123
2024-08-14 11:37:18 +08:00
@location123 UI 好看
ChangQin
2024-08-14 11:40:40 +08:00
我们已经用 Kotlin Multiplatform 来开发跨平台了,用的是 UI+Logic 跨端,各自平台不同的写桥实现。目前就是感觉一些工具类写桥比较麻烦,UI 上大部分都很方便,还有就是 iOS 侧滑返回目前还没官方组件,这个比较坑。
cJ8SxGOWRH0LSelC
2024-08-14 11:56:39 +08:00
@ChangQin #14 那就差不多了
JZen
2024-08-14 12:27:10 +08:00
用了三个月,大体没什么毛病,只遇到一个比较坑的问题,列表没有滚动条,需要自己手搓一个
fan123199
2024-08-14 12:30:19 +08:00
写了几个 App 了,都是 Compose ,确实有一些极限场景有性能问题需要考虑。但是开发体验熟悉后挺舒服的,比写 xml 舒服多了。
listen6256
2024-08-14 12:49:02 +08:00
compose 开发真的很爽,开发效率比 xml 高很多。
就是在低端机上性能拉跨,尤其是 compose 的动画在低端机上卡成 ppt ,还有就是 lazy 系列组件,在数据量大时,性能很差。
JayZXu
2024-08-14 13:17:18 +08:00
比传统 xml 开发爽,跟现在的前端写法一样一样的
但是学习成本高,教程也少,查个文档也麻烦,很多东西都需要摸索
monkeylmj
2024-08-14 14:17:09 +08:00
@listen6256 低端机上性能拉跨的主要原因是什么呢?我理解底层都是用 skia 之类的来渲染的,同样是低端手机用旧的一套和新的 compose 差别很大吗,是 compose 自身优化的问题么。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1064788

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX