Compose项目练手初体验

186 阅读3分钟

起因

  • 官方一直在推Compose,号称性能比肩原生,开发效率又高,这不妥妥“高副帅”?入手不亏
  • 加上自己本身也在学习Android开发,一直写的原生,短暂接触过Flutter,但是Flutter是Dart,略显水土不服,所以,对于原生就支持Kotlin,并且还能直接和原生互调的Compose,确实是不错的选择
  • 学习东西,当然要落实到项目里啦,那写个什么项目呢?这不就巧了,学校开了门安卓的课,这不直接课设搞起来,题目就选《图片分享APP》
  • 项目名字一下子就出来了——PicSingular

设计

后端——PicSingularCore

  • 既然是图片分享,那就少不了要服务端了,这样才能和别人一起分享嘛~
  • 其实学校是给了一个OpenAPI的后端的,但是,跟大多数开放平台一样,有访问次数限制,限制一天只能访问一百次,这能忍?一百次那不是分分钟就用完了,一点体验没有,怎么办呢?
  • 当然是自己实现咯。想访问多少次都行,还能对接口进行更多自定义设置,所以,直接经典一套,SpringBoot 走起,感兴趣可以看看这里:PicSingularCore
  • 既然要自己写了,那基本的鉴权授权当然也要有了,于是,引入 SpringSecurity
  • 至于数据库操作方面,由于时间原因以及方便性考虑,直接上Spring Data JPA,方便又省事,问就是偷懒
  • 最后,关于部署,直接部署到个人服务器上即可,配套来个docker-compose,直接up一下,即可了

Android端——PicSingular

  • 架构模式:由于选择了Compose,以及抱着学习的态度,恰巧Google又在大力支持MVI,所以,整个项目采用 MVI 架构模式
  • 相关技术点:(都用Compose了,当然全面向Jetpack靠拢了.
    • ViewModel
    • DataStore
    • Hilt
    • Retrofit
    • Paging3
    • Coil
  • 界面预览: image-20221118211031352 image-20221118210953734 image-20221118211113949 image-20221118211130576

体验

  • Compose的开发效率确实比传统View开发来得高,布局直接声明,不要太爽
  • MVI 的架构模式,在Compose中结合其state,界面更新都不用自己操心,省心又省力
  • 虽然界面UI没有经过设计,但是可以看出,利用Compose进行页面布局,UI部分不会差到哪去,操心的东西又少了有没有

总结

  • Compose 虽然是近几年新推出的,但是开发体验确实不错,特别是开了LiveEdit之后,实时预览,这是传统View开发无法比拟的,大大提高了开发效率
  • 在写项目过程中,因为是第一次写Compose,也是第一次写MVI,所以也参考了一些开源项目的写法,整体开发体验还是不错的,对于一些Jetpack的一些使用还是不够熟练,还是有待学习
  • 最后,Compose作为新的开发框架,加上现在官方大吹KMM,个人认为是下一个风口,学习入手一下不亏