首页
Preview

网易微专业-安卓高级开发工程师|阶段6完结无秘

t012fa7775e5c4d8152 - 副本.jpg

2022年,网易微专业安卓高级开发上线的时候,Jetpack Compose刚推出稳定版不到一年。

那时候市场对Compose的态度很分裂。一部分人高呼“这是安卓UI的未来”,另一部分人嗤笑“又是谷歌的玩具,过两年就凉”。绝大多数在职安卓工程师站在中间,观望,不行动。

没人愿意把筹码押在一个不确定的新框架上。

网易这门课开篇第一句话,没提Compose。

讲师放了一张图:2010到2022年,安卓UI编写方式的演变史。

2010,XML加findViewById,手写模板,繁复但踏实。

2014,ButterKnife盛行,注解替代模板,然后被官方吸收成ViewBinding。

2017,DataBinding蹿红,视图和数据双向绑定,有人爱有人恨。

2021,Compose预览版,声明式UI,彻底抛弃XML。

那张图横跨十二年。讲师指着最后一格说:

“你不是在学一个新框架,你是在看安卓UI演进到今天必然长成的样子。”

台下没人低头看手机。

第一层拆解:不是“抛弃过去”,是“换一种思考方式”。

很多工程师抵触Compose,理由很朴素:我写XML写了七八年,没觉得哪里不好。为什么要学一套全新的东西?

网易这门课没有正面反驳这个观点。它只是演示了一个最简单的情景:列表展示。

XML时代的写法:一个RecyclerView,配LayoutManager,配Adapter,配ViewHolder,配Item布局。五个文件,三十分钟,跑起来。面试还能被问“RecyclerView复用机制是怎样的”。

Compose的写法:LazyColumn,括号里写items,闭包里写Item。五个文件变成三行代码。

讲师放完对比,说了一句话:

“你不是必须用Compose。但如果你在一个月要做八个列表页的项目里待过,你会回来找这三行代码。”

第二层拆解:状态管理是Compose的灵魂,也是新手的鬼门关。

Compose入门很简单。画一个文本框,写Text(“Hello”),三秒钟跑起来。初学者往往在这一步产生错觉:这有什么难的?

然后他试着让文本框的内容随按钮点击变化。

XML时代,这太简单了。findViewById,setOnClickListener,setText。命令式,直来直往,不会错。

Compose时代,他在按钮点击事件里写了text = “新文本”,屏幕没反应。

他加Log,Log打了。他加断点,断点进了。他重启应用,新文本出现了。他盯着屏幕,不知道问题出在哪。

网易这门课,专门用一整章讲这“三行代码为什么不更新”。

不是甩出官方文档里的“State”“不可变性”“重组作用域”。是从一个最简单的计数器开始,一行行加mutableStateOf,加remember,加ViewModel。每加一行,屏幕上那个数字就“听话”一点。

讲完这一章,评论区有人写:

“原来不是我笨,是Compose真的和我想的不一样。”

讲师在那条评论下面回了一句话,后来被反复截图:

“不一样是正常的。你用一种思维写了十年代码,用三天改过来,已经很厉害了。”

第三层拆解:把“声明式”讲成听得懂的人话。

Compose官方文档里有一句话:UI是状态的函数。

八个字,每个字都认识,连在一起不知道在说什么。

网易这门课讲这八个字,用了三十分钟。

它先放一个开关ToggleButton。亮色模式、暗色模式,点一下切换。

XML时代怎么实现?Activity里设一个布尔变量,setOnClickListener里取反,根据新值改TextView颜色、改背景Drawable、改状态栏图标。所有改UI的代码,都是你亲手写的。

Compose时代呢?你只声明:当isDark为true时,文字是白色,背景是黑色;为false时,文字是黑色,背景是白色。

你不写“改颜色”的代码。你只写“颜色是什么”。

然后你点按钮,改isDark的值。UI自己变了。

讲师总结:

“命令式是你亲手给UI下指令:你变白,你变黑。声明式是你只告诉UI:黑了喊我。至于怎么变,UI自己操心。”

台下有人“哦”出了声。

第四层拆解:实战不是“跑通”,是“踩坑”。

网易这门课的项目模块叫“电商应用重构”。

一个四五年历史的老项目,UI层是Activity加Fragment加XML,逻辑和视图藕断丝连。新需求来了:首页要加一个沉浸式头图,商品卡片要支持左滑收藏右滑加入购物车,个人中心要用自定义折叠布局。

需求文档三页纸,改XML的方法写了两千字备注。

讲师问:你们猜,把这套UI用Compose重写一遍,要多久?

有人猜一个月,有人猜两周。

讲师说:第一遍,三周。第二遍,三天。

因为第一遍你会踩完所有的坑:重组范围太大导致卡顿,remember用错位置导致状态丢失,derivedStateOf没用对导致死循环。

第二遍你知道坑在哪,绕着走。

这门课最值钱的部分,不是教你怎么绕坑,是带你把第一遍的坑踩完。

每踩一个,助教在答疑区贴一篇官方文档链接,加一句人话翻译。

三周后,那个电商首页跑起来了。滑动流畅,交互跟手,暗色模式切换无缝。

讲师在最后一节说:

“你现在觉得Compose还行,不是因为你聪明,是因为你把该摔的跤都摔完了。”

第五层拆解:Compose不是终点,是安卓开发的“新常态”。

2022年那会儿,很多工程师还在问:Compose到底值不值得学?会不会像DataBinding一样,火两年就被冷落?

网易这门课没有直接回答。

它只是放了一组数据:2022年5月Google I/O,Compose相关议题21场;2021年同期,7场。

2022年6月,GitHub上Compose相关开源项目数量,是2021年的三倍。

2022年7月,国内大厂招聘App里搜“Jetpack Compose”,岗位数是年初的四倍。

讲师翻到最后一页PPT,上面只有一行字:

“它会不会过时,取决于安卓还要不要继续演进。”

台下安静了几秒。

后来有人问:这门课是给谁上的?

官方介绍写着“三年以上安卓开发经验”。

但跟完的人知道,这句话写窄了。

它确实是给高级工程师的——那些写过上千个findViewById,被自定义View折磨过无数遍,清楚知道XML在大型项目里有多难维护的人。

只有这些人,才会在看到LazyColumn那三行代码时,不是觉得“这有什么”,而是愣住,然后沉默。

因为他们知道,一个自己写了七八年的东西,被三行代码取代了。

这不是学不学的问题。

这是你愿不愿意承认,安卓真的变了。

网易那门课后来没有出过完全一样的版本。技术更新太快,Compose每年迭代两个大版本,课程必须跟着改。

但老学员硬盘里都存着2022年的原版。

不是因为新版不好。

是因为那个版本,陪他们走过了从“观望”到“动手”的那道坎。

课程会过时,但第一次跑通Compose项目、看着UI随着状态自动刷新的那个下午,不会过时。

版权声明:本文内容由TeHub注册用户自发贡献,版权归原作者所有,TeHub社区不拥有其著作权,亦不承担相应法律责任。 如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

点赞(0)
收藏(0)
徐迎东
暂无描述

评论(0)

添加评论