本文精选自CSDN博客社区“2021年度征文”,活动正在进行中!丰厚大奖,快来参与!链接:https://bbs.csdn.net/topics/604097536
今年七月份我写过一篇年中回顾:「电子厂里撂了挑子,我默默自学起了Android|2021 年中总结」(https://blog.csdn.net/allisonchen/article/details/118534979)。虽说是年中回顾,但超过一半的篇幅讲的是我从事 Android 开发的契机和一路以来的故事。反响超出了预期,很多朋友在博客里留言,和我分享他们类似的经历和当下的状态。
我很欣慰自己的故事能够激起大家的共鸣,这回我想认真盘点下今年的所行、所思,期望也能够唤起你的一点点思考。
先来看个今年的一些数据:
写了 30 篇文章:27 篇技术、1 篇翻译、2 篇随笔,总字数 15 万+
公众号、掘金、CSDN 三个平台阅读量 20 万+
肝了 8 个开源项目,总代码量 20k
做了 3 次演讲:部门、公司、GDG 直播各 1 次
30 篇文章
年中那边文章解释过我突然开始写作的原因,就不赘述了。今年写的技术文章主要着眼于 Jetpack、Compose、Android 12 这几个 Android 平台的关键技术。所有的文章就不一一贴了,贴几篇写得极为用心的文章,并附上一些背后的想法。
深度解读 Jetpack 框架的基石-AppCompat:https://blog.csdn.net/allisonchen/article/details/112690282
聚焦在 Jetpack 框架集合里最常见、也最容易被忽视的 AppCompat 框架,详细地阐述了它的作用、构成和原理。期望给大家介绍下这个默默无闻的功臣。这篇文章是今年写的第一篇,也是被 Android 官方转载的第一篇,对于我来说有很特别的意义。
为什么推荐使用 Jetpack CameraX?:https://blog.csdn.net/allisonchen/article/details/113483498
CameraX 框架发布已久,但我的工作内容很少涉及 Camera 功能,便趁着这个框架填补下自己的空白。所以花了很多精力去研究它的各种细节,包括其优势、Camera2 的劣势、已有的文章哪些没讲到位、如何充分覆盖到完整 API、如何美化 DEMO 等等。发布之后收到了很多好评,但也有不足的地方,比如原理未曾提及。
Android 上数据库的新选择,Jetpack Room:https://blog.csdn.net/allisonchen/article/details/113881375
疫情不明朗的缘故过年期间留守南京,边休息、边研究 Room 框架,竟解锁了过年的新模式。为什么是 Room 呢?就是想了解下其相较单纯的 SQLite 到底方便在哪、代码能简化到什么程度。这篇文章倒是提了原理,但还是漏了一个重要方面,就是关联数据表,后面有时间我再完善吧。
Jetpack Compose 助我快速打造电影 App:https://blog.csdn.net/allisonchen/article/details/115052707
Compose 框架多火就不用说了吧,写作的那会儿正值 Compose 的全球挑战赛。便连肝了两礼拜,快速学习了各种 API、声明式编程思想以及与其他 Jetpack 框架的配合,将之前写的 MVP 架构的电影 App 改成了 MVVM 架构的 Compose 版。成品觉得还可以,但就 Compose 技术而言,只涉及到了皮毛,就算是一种入门吧。
Jetpack Hilt 有哪些改善又有哪些限制:https://blog.csdn.net/allisonchen/article/details/115680747
DI 框架在后端中应用广泛,但在客户端中的使用着实有限。我自己来说,顶多就是在改造 SystemUI 的时候研究过 Dagger2 的部分。那么 Hilt 基于 Dagger2,又宣称做了很多优化、并和 Jetpack 家族的其他成员进行了深度融合,自然值得去了解一下。但当时在这个框架上投入的时间远远不够,只涉及到了 API 的使用,原理也没时间理会。后面我想着基于最新的 Hilt 版本进行强化学习。
全面复盘 Android 开发者容易忽视的 Backup 功能:https://blog.csdn.net/allisonchen/article/details/115658220
工作中遇到深度定制 Backup 功能的需求,可网络上关于这块的内容大都止步于 autoBackup属性,少部分谈及一下原理,而且还是基于很老的系统版本。而事实上 Backup 功能,Google 非常重视,其可玩性也很高。所以借这个契机,从功能目的、操作对象、原理、命令、破解、深度定制、版本升级中的各项变化等完整角度入手,肝了 3 万字,期望填补网络关于这块的缺失。反响也超出了预期,但这块功能较冷僻,对于大家实际的帮助是有限的。
Android 12 上全新的应用启动画面,还不适配一下?:https://blog.csdn.net/allisonchen/article/details/116166124
无意中了解到 Android 12 中 SplashScreen 的新功能,觉得十分有趣,加上之前被启动画面相关的坑困扰过,便认真研究了一波。它着眼于 App 的第一屏的打造,可如果 DEMO 太基础、太粗浅,是无法打动别人来使用的。于是研究和查找了非常多的 SVG,并自己设计了多种创意动画,最终形成了那个还蛮炫酷的启动效果。文章出炉的时候,正值 Google IO 2021 的召开,趁着这个热点文章也着实火了一把。我的公众号单篇阅读第一次破了 1000,掘金上的点赞量则近 100。后来我把 DEMO 发到了推文,SplashScreen 功能的 Google 负责人看到之后还点赞并转发,这无疑给了我巨大的信心。
Android 12 上焕然一新的小组件:美观、便捷和实用:https://blog.csdn.net/allisonchen/article/details/117261795
这同样是基于 Android 12 一项非常重要的行为变更,即针对小组件功能进行了大刀阔斧地升级:从外观到使用再到开发者的适配。为了完整演示各项变更,我设计了各种实用的小组件进行演示,并将旧系统上的效果一并展示出来,进行直观地对比。最后的反响未达预期,但好在后来 Google 转载了这篇文章,算是一种慰藉吧。
CameraX + 华为 ScanKit:二维码扫描的终极解决方案:https://blog.csdn.net/allisonchen/article/details/118314229
之前看到 OpenCV 大神呱哥采用华为的 ScanKit 框架做了二维码的深度实践,联想到之前写的 CameraX DEMO 在扫码方面尚有优化的地方。于是一边将 ScanKit 集成进来,一边增加了很多拍照和视频的优化,并将实现语言改成了 Kotlin。即便如此,还是忘记了多码选择的功能,后续我将加上这个功能,并将 Google MLKit 和腾讯的扫码方案也集成进来。
电子厂里撂了挑子,我默默自学起了Android|2021 年中总结:https://blog.csdn.net/allisonchen/article/details/118534979
本打算简单总结一下半年来都干了啥,后来发现内容太过单薄,于是借着这个机会跟大家回顾了下自己与 Android 结缘的往事。这篇走心的文章让我收到了非常多的留言和鼓励,也了解到很多朋友大同小异的入行故事,算是一次很不错的尝试。
一气呵成:用Compose完美复刻Flappy Bird!:https://blog.csdn.net/allisonchen/article/details/119107197
从未做过游戏的自己一直非常想试试,加上受到了 fundroid 大神打造俄罗斯方块游戏的激励,便决定使用 Compose 框架突破一下。Flappy Bird 游戏曾经红极一时、玩法简单,就选择它作为复刻对象。从零开始推进游戏拆解、界面实现、状态更新、动画效果、计分规则等步骤,花了 2 个礼拜。这篇文章在掘金上首破 100 赞,非常满意。当然,游戏中小鸟的飞翔效果、碰撞的精确计算等细节尚可以继续优化。想着后续尝鲜 Compose Multiplatform 打造跨平台的 FlappyBird 的同时一并优化这些不足。
Jetpack新成员SplashScreen:打造全新的App启动画面:https://blog.csdn.net/allisonchen/article/details/119656618
之前写的 Android 12 SplashScreen 文章引起不少朋友的兴趣,但部分朋友非常在意它是否兼容低版本系统。果不其然,Google 默默进行了支持并加入到了 Jetpack 大家庭。结合之前的 Flappy Bird 游戏应用上了这个框架,在 12 和 8 两个高低版本上打造了近乎一致的游戏启动效果,同时也补充了它的实现原理,这篇文章也成为了两个月后直播分享的主题。
都 2021 年了,还有人在研究 Handler?:https://blog.csdn.net/allisonchen/article/details/120618884
无论是 App 开发还是 Android 源码实现,Handler 机制的应用随处可见,自然也成了面试过程中必问的内容。我潜心研究了 Handler 机制的 Java 层原理、Native 层原理以及各种可能涉及的问题。最后综合起来,汇聚成了 20 个问答。知识点类的硬核汇总果然很受欢迎,很快点赞即破百,这也让我产生了一个疑问:相较于新技术,这种纯纯八股文或许才是大家更“需要”的现实知识?
影响力有限,从写作初期到现在仍在寻求能传播更广的渠道。一年来文章有幸被 CSDN、掘金、鸿洋以及其他头部公众号多次转载,非常感谢他们的认可。其中我想着重感谢 「Android 开发者」公众号的「开发者说」栏目,今年一共转载了我 5 篇文章,我的「TechMerger」公众号应该是 2021 年度 Google 转载最多的个人公众号,非常荣幸。
除了原创文字,我一直想尝试其他的形式或方式,比如转载、视频、翻译啥的。简单了解之后发现视频这种形式需要学习的东西非常多,短时间学不透、更玩不转。遂作罢并打算先尝试下翻译这种 轻巧 偷懒 的方式。恰好发现 Jetpack 家族推出了实用的新框架 DragAndDrop,就试着翻了一下官方的文章。篇幅不大,但翻译得很有兴致,因为这种先理解别人的意思、再通过自己的技术背景去转化为别人能理解的文字的过程,非常有趣。后续我将发掘和翻译更多新颖的技术文章。
8 个开源项目
围绕上面的技术文章,总共肝了 8 个开源项目,一共 20k 代码量。
其中:
ComposeMovie作为用 Compose 重写的电影 App,算是 Compose UI 架构的入门吧,竟然还被 Compose 培训课程拿去做了宣传,这是不是也算一种认可,哈哈。
https://github.com/ellisonchan/ComposeMovie
ComposeBird 游戏值得学习一下小游戏的实现思路,以及如何玩转 Compose 的状态刷新机制。star 数很快突破了 100,对我来说意义非凡。
https://github.com/ellisonchan/ComposeBird
JetpackDemo 则是我迄今为止学习完的 Jetpack 框架的源码集合,有每个框架比较详尽的使用实例,这也是我会持续完善的一个项目。
https://github.com/ellisonchan/JetpackDemo
SplashScreen 和 NewAppWidgets 两个项目作为 Android 12 新特性和行为变更的 DEMO,有不少创意的设计,值得大家参考一下。
https://github.com/ellisonchan/SplashScreen
https://github.com/ellisonchan/NewAppWidget
《我与手机的不解之缘》
虽与部门内的同事们共事多年,但互相的了解着实有限。于是在部门分享的时候我选择了工作中再熟悉不过的手机这个切入点,将大学和工作以来用过的手机和其间发生的故事串了起来,期望拉近彼此的距离,也给年轻一些的同事一些职场上的启发。
《MAD,现代 Android 开发》
公司层面每年都会举办大型的技术分享活动,我想着如今 Android 开发技术已发生重大变革,便以现代 Android 开发为话题着重阐述了 Android 重点开发栈的前世今生。
《使用 Jetpack SplashScreen 重塑应用启动画面》
起初收到 GDG 参加「社区说」直播邀请的时候,担心自己讲不好,但还是爽快地答应了。一来因为一直在幕后默默写文章,也想跟大家面对面交流;二来想要突破一下,尝试没有体验过的直播形式。当然为了不辜负朋友们的信任,我花了很多时间去优化 DEMO、PPT 文案和效果等各个细节。最终的直播成绩算是满足了自己的预期,但毕竟是处女秀,也有很多可以改善的地方,以后再努力吧~
B站地址:https://www.bilibili.com/video/BV1gS4y1d797?spm_id_from=333.999.0.0
上半年参加了两场代码挑战赛:Google 举办的 Compose 挑战赛和华为举办的鸿蒙开发者大赛,都拿到了心心念念的奖品。尤其是 Google 和乐高联名的 Jetpack 积木冒着疫情漂洋过海来到了我手里,很特别,值得珍藏 !
除此之外、因 Google 转载文章、参加社区的各项创作活动,也得到了 1 堆礼物:5 件T恤、6 个杯子、3 个抱枕、月饼、积木、机械键盘、京东卡、电脑包、鼠标垫、帆布袋、帽子、各种主题贴纸。几乎承包了我一年的职场物件,比心♥️。
参加活动的间隙也收获了些认可,可能源自压力和紧迫感的缘故,我以前排斥参加一切有明显竞争性质的活动。但今年抱着试试看的态度参加了十几次活动之后,收获了压力之外的很多体验。建议大家多参加,这对于自己、平台来说,是双赢的。
一些数据
平台 | 粉丝 | 阅读量 | 收益 |
---|---|---|---|
公众号 | 1200+ | 篇均阅读:200+ | 流量主加上赞赏勉强够吃顿烧烤吧 😭 |
掘金 | 近 500 | 8万+ | 1 堆奖品,不是钱能比拟的 😊 |
CSDN | 400+ | 10万+ | 谈那干啥,肝就完了 ⛽️ |
知乎 | 不到 100 | 12万+ | 无私奉献,要啥自行车 😠 |
公众号、博客和 CSDN 这三个主要更新的平台,今年总共有 20 万+ 的阅读量。加上中断了的知乎和多方公众号转载数据的话,总阅读量应该近 50 万。
这个数据自然无法跟大佬相比,但达成了自己的预期~
得与失!
至此,分享了一年来的很多收获。如果到这就完了,那么势必成为流水账。我想再多一些文字,跟你分享这一整年来的心得体会和心路历程。
谈起得的话,除了上述的认可和奖品以外,得数今年认识到的很多 nice 的朋友。基本上每周都能结交或作者、或读者的朋友,咱们通过邮件、博客、公众号、微信线上交流,让我学到了很多、也打开了更广阔的视野。期望有机会与一些朋友线下面基。
得到很多的同时也留有一些遗憾。
因为很忙的缘故,运动的部分有所懈怠,目标达成的情况不如去年,12 个月中只完成了一半。好在因为饮食克制得还不错,身型仍然在线。
另外,其中有一段时间由于更文的压力和熬夜的陋习,情绪变得急躁、焦虑,对待家人也缺乏耐心和关心。可怕的是自己都没有察觉到自己的这种变化,好在后面自己察觉到了。感谢家人的理解和支持,后面我会注意写作和生活的平衡,尽最大努力去调节自己的状态,可持续地做好我想做的事情。
明年?
几个泛泛的目标:
一直以来没有统一、高效、长足的知识体系,明年计划认真重构并持续维护自己的笔记系统,可能的话考虑开源出来
继续研究 Jetpack 其他框架和新框架,尤其是 Compose 的其他妙用、跨平台以及原理
了解和实践 Firebase 技术
强化 Kotlin 的学习,尽可能首选 Kotlin 编程
开始着手一直心心念念的 AI 对话应用,构想很大、很难一蹴而就,尝试慢慢实现并逐步开源,整个过程考虑做成连载文章
针对 Android 开发者某个痛点造个好用的轮子,并坚持维护下去
跟着 B 站上一个有趣的 UP 主学做个 Python 方面的小工具,比如图片批量转圆角
几个量化的目标:
更文频次:周更的压力很大,1 月 2 篇的频次推出高质量文章,公众号的话会穿插转载高质量文章或视频
更灵活的形式:除了原创文章和开源项目以外,尝试 3 次翻译,1 次视频的形式
宽泛些的主题:尝试技术、总结以外创作关于职场、产品体验等非技术的主题,各 1 篇
公众号粉丝达 3000+,篇均阅读量力争 500+
掘金:达到 Lv 4,取得优秀创作者头衔
CSDN:阅读量达 20 万+、粉丝冲 1000,为博客专家的头衔努力
健康:12 个月的运动目标起码完成 9 个月,另外争取拿到日行 30000 步、单日爬楼 200 层的勋章
简单来说,期望明年继续突破自己、并努力在实用和新颖、数量和质量之间找到一个平衡!
如果非要给我的 2021 找个关键词的话,我会选择 尝试 这个词。可以说,我这一整年都在保持尝试,从发掘各种效率工具、到复刻心心念念的小游戏、再到研究各种感兴趣的框架、再到逼着自己去直播分享和 Coding 竞赛......
途中的很多个瞬间我都想躺平,但转而一想以前热衷的快餐视频和游戏早已乏善可陈、审美疲劳。试着做一些未曾涉足、饶有兴味的事情,虽然不那么爽、不那么快得到满足,但摸索其中的过程总能让我有另一番体验,如何停得下来?
可能你没发现,成年人看似自由,但事实上随着年龄的增长,活动的空间反而日渐缩小和固化,所做的事情、所思的想法日趋一成不变。但凡有点机会,尽可能尝试些不一样的东西,跟工作相关的、不相关的,你喜欢的、却一直犹豫的,都可以。
分享几个自己一直想要做的鸡汤小例子:
去一直以来向往的城市、街巷转转
去看一部一直没来得及看的高分纪录片
去感受一首很特别的歌曲、纯音乐
去沉浸到一本美妙的杂志,感受久违的纸张
去了解一门知道但没尝试过的语言或技术语言
去购买一款付费软件,解锁更多的功能和便捷
去尝试阅读一篇英文长文,获得第一手的资讯
去付费一个课程,精准解决自己的软肋
去精雕细琢你的笔记并公开出去,分享你的独家典藏
去做个开源的小玩意,技术类非技术类的都可以
去认真读完收藏夹里吃灰已久的一篇长文
去攻克一个一直不太明白又很在意的知识点并分享出来
去和其他久违的朋友聊聊,分享彼此的近况
尝试不断地切换你的状态、更新你的视角、收获更多丰富的体验,一旦勇敢地开始,你会发现自己根本停不下来。
欢迎大家在评论区留言,说说你这一年的见闻和感悟。
原文:https://blog.csdn.net/allisonchen/article/details/122149908
点击【阅读原文】,了解年度征文详情!