
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随着状态自动刷新的那个下午,不会过时。








评论(0)