![cover](https://img-blog.csdnimg.cn/img_convert/6cd96aa494d136d254f0678a130e7bee.png)
现代化 Android 开发:多 Activity 多 Page 的 UI 架构_开源安卓多页面
世上没有最好的架构,只有最适合自己的。UI往往是变动最频繁的业务,所以了解各个组件的优缺点,根据业务逻辑去选用最适合的,才是高效开发的捷径。不管怎样,都是有无数坑点的,趋利避害才是UI的归宿。UI最好的经验就是知道各个组件有什么坑点,如何避开。不然随便一个坑,就够开发加好一会儿班了。
![](https://csdnimg.cn/release/devpress/public/img/ic-book.4f347164.png)
Activity
与 Fragment
/Navigation
的启动新界面的方式各不相同, Navigation
还有一个创建 Graph
的方式,代码编写极其繁琐,所以又诞生了统一接口的路由框架,其主要解决以下几个问题:
- 启动方式的大一统
Navagation
注册表的代码自动生成- 传参的大一统,
Activity
使用Intent
添加参数,Fragment
使用Bundle
- 跨
module
的界面启动(模块化需求)
由于官方没有出品,所以就是由各个业务职能部门创建,诸如:ARouter
、TheRouter
、QMUI Scheme
、Emo Scheme
等库。
ARouter
与 TheRouter
偏向于模块化。
而个人开发的 QMUI Scheme
与 Emo Scheme
则没有支持模块化,而是在多 Activity
多 Page
的支持上花费了很大工费。这里一个 Page
可以是Fragment
也可以是 Compose
。
多 Activity
多 Page
架构是指我们可以使用多个 Activity
, 每个 Activity
都可以是多 Page
的存在, 具体是否要使用 Activity
, 则由开发根据业务逻辑决定。
QMUI Scheme
支持了多 Activty
多 Fragment
架构。
Emo Scheme
支持了多 Activity
多 Compose
架构。
这是二者的差异,在 Emo Scheme
开发时,我觉得 Compose
诞生后,Fragment
就是一个积累的存在了,所以现在我就完全抛弃它了。
那为何要采取多 Activity
多 Page
呢?
- 可以根据业务逻辑更好的做数据复用。举个例子,注册流程,可能分成数个界面,最中收集到全部数据,我的做法是用一个
RegActivity
, 每一个环节用RegUserNamePage
、RegAvatarPage
等,数据放在RegActivity
的ViewModel
里供所有Page
使用,就不用数据传来传去了。而注册成功后到新的Activity
, 销毁RegActivity
。 - 某些场景用单独的
Activity
更舒服:
- 全屏。 如果会涉及全屏切换,那单独出一个
Activity
就更友好。因为我们设置全屏标志位是相对于Activity
而言的。全屏界面跳转到非全屏界面,非全屏界面跳转全屏界面,如果用单Activity
去维护,那是一件很痛苦的事情。 - 需要用到
Activity
的launchMode
的场景,例如播放器,需要singleTask
之类的模式 - 需要一次性销毁多个
Page
的情况,例如前面注册流程的例子,我注册过程中,用户可以返回到上一个Page
, 但是当注册完成后,那就直接销毁RegActivity
。
- 目前
Compose
里嵌套WebView
,Navigation
转场动画效果有点差,所以我是选择用Activity
去承载。
总而言之,之所以把框架做得这么复杂,就是期望开发能够认真思考业务流程,要根据我们的业务流程认真的考虑我们该以什么样的容器去承载我们的界面更合适。选择正确,往往能取到事半功倍的效果。
目前而言,Emo Scheme
是所有路由框架中对这一块中支持得最好的,具体使用方法可以前往 官网 了解。
之前也写过其工作原理的文章,可见 又撸了一个 Scheme 路由 。
emo 原本的仓库现在闭源了,新建了 emo-public 仓库承载已开源的部分,以后打算开源的部分才会提交到这里。
最后
世上没有最好的架构,只有最适合自己的。UI
往往是变动最频繁的业务,所以了解各个组件的优缺点,根据业务逻辑去选用最适合的,才是高效开发的捷径。不管怎样,都是有无数坑点的,趋利避害才是 UI
的归宿。UI
最好的经验就是知道各个组件有什么坑点,如何避开。不然随便一个坑,就够开发加好一会儿班了。
Android 学习笔录
Android 性能优化篇:https://qr18.cn/FVlo89
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数HarmonyOS鸿蒙开发工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年HarmonyOS鸿蒙开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上HarmonyOS鸿蒙开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新
如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注鸿蒙获取)
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
更多推荐
所有评论(0)