Android Compose UI尝试

Android开发最近开始大面积吹Compose-UI,于是我也抽时间研究了一下,几天过去之后,我感觉这货已经不是以前的安卓开发了,只能说是一种全新的开发方式,也就是跟之前那一套基本上没太大关系了。

不知不觉中接触Android开发已经经过了10多年,第一次接触Android版本是0.9,当时只是把sdk下载下来跑一下模拟器尝个鲜,同时间也正在学习iPhone开发,后来周末陪同事去中关村买了安卓的第一款手机HTCG1,用了之后体验真的很差,跟同时期的WMSymbian手机没法比,但是新事物出现,可能就是未来趋势,果然没多久公司从摩托罗拉挖来一位开始研究做公司产品的Android版本,我那时也在周末的时候也偶尔看文档学习一下,毕竟有SymbianJ2ME的经验,上手还是很快的,期间自己做了几个小的APP练习了一下,到了2011年我开始正式做Android相关项目了。

回头看算是经历了整个Android开发技术革新过程,早期开发GUI程序都是经典的MVC模式一把梭,只是在Android平台下Activity充当Controller的角色,后面发展到单Activity+多Fragment的方案,Fragment也充当Controller的角色,这几个阶段的项目代码耦合性普遍很高,也就是UI和逻辑全部扎堆在ActivityFragment里面,显得想当臃肿,不好维护,于是出现了各种解耦的想法,官方这时候把逻辑处理部分放到Presenter层,搞出来一个MVP模式,这个我一开始是在使用Android TV里面leanback库项目了解到的,这东西有点学院派的味道,把表现逻辑层强行拉出去,ViewPresenter是双向依赖的,后来发现在实际项目中需求频繁变更的情况下,除了单元测试方便点,这东西还远不如抽象和细分部分UI来的有效率,尝试用了一段时间之后果断弃坑,后来安卓又开始用上MVVM,响应式编程,用数据驱动UI,Google提供了ViewModel/LiveData/DataBinding等组件,跟一些web前端框架一样,双向绑定自动刷新界面,后面部分项目基本上也用上了,但是也有一些不太适应的地方,ViewViewModel层直接交互还是有点乱,另外最头疼的一点,开发调试的时候报错经常没法定位,这个很要命,某个地方犯了个小错,结果报错的地方离开十万八千里,有时候只能屏蔽代码来缩小问题范围,严重降低开发效率。

来到Compose UI,一开始我看了一下官网教程,走马观花过了一遍,才知道MVVM到这里进化成了MVI,搞出来个Intent,整个程序过程就变成了,UI变化传递给Intent来操作Model更新Stage来通知View刷新,好吧,有点绕,最好的理解就是看项目代码,推荐nowinandroid,一个非常全面适合学习的开源项目。

尝试了Compose UI之后是什么感觉?我想移动端应用的开发大概是到尽头了,虽然还在整活,但是看整个演变过程,最终走向的是web前后端框架的结合体,什么响应式编程双向榜单函数式编程思想概念一大堆,越整越复杂,再看dagger,活脱脱的后端东西,各种注入,已经开始写repo,开发个APP越来越像在做前后端开发了,是真的卷。

话说回来,发展成这样做大项目还是很有用的,比如上面提到的nowinandroid,模块划分非常细致,如果是大团队做项目,值得采用这种架构,细致到每个功能点每个页面都作为一个模块,这样开发者之间协作会非常轻松,但是个人项目不建议这样,太啰嗦,效率低,我做个人项目和团队项目的代码架构风格差别非常大,个人项目虽然也细分模块,但是注重的是高效率组装,一旦要做新的应用,力求在极短的时间内用累计下来的模块拼装起来,短时间内就能出东西,而做团队项目注重的是降低沟通成本,合作的时候各自模块尽量做到完全独立,避免各种扯皮浪费时间,所以具体用什么还是得看资源和场景,再就是我自己来说已经是老年选手了,各方面已经大不如年轻的时候,别说学习太多的新东西,就连以前会的很多东西都开始遗忘,在做新项目的时候我依然会选择成熟的框架模式来做。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

 桂ICP备15001694号-3