之前业务的工作已经告一段落,两年多的搬砖已经占据了职业生涯的大半时间,这里简单整理下收获。
技术积累
安卓基础业务需求开发
对于一般的业务需求,写UI发网络请求存储和管理数据等,能很好地完成。
安卓绘制系统
熟悉安卓View系统,能通过自定义View实现中等复杂业务需求。熟悉安卓Canvas API,能实现复杂的动画和绘制效果。
对SurfaceView、TextureView有初步了解。
协程和Flow
熟练使用Kotlin协程和Flow API进行业务需求开发,了解协程的底层原理。
Compose基础
了解基本的Compose View开发方式。
业务理解
重要数据指标
LT(Lifetime) 用户生命周期,一个用户从安装到卸载的时间跨度。 SD(StayDuration) 用户停留时长,如从打开APP到退出的时间。 功能渗透 用户使用了产品某个功能的比例。 内容生产 用户在产品内产出内容的行为和规模。 内容消费 用户在产品内浏览、观看、阅读内容的规模。
从数据指标变化的表象可以找到背后的深层原因,即分析“影响链路”,以决策后续功能是否能全量。例如,某功能使得优质内容展现增加,带动用户点赞发布增加,如果相关数据变化都符合预期,那么这个链路就是比较置信的。
弹幕系统设计
配置读写 弹幕开关是否开启、弹幕展示行数、字号大小等信息需要保存到本地,且同步到服务端。考虑诸多问题后,配置模块可能相当复杂,如不同场景配置是否同步,如配置的存储值、生效值、展示值之间的映射等。
弹幕数据源 考虑到用户经常只看了几秒就切换到了其他视频,数据源需要支持随播放进度分片加载。
弹幕时间轴 弹幕需要有自己的时间轴和计时逻辑,因为播放器的时间回调是不够精确的。这里使用监听系统VSYNC的方式来实现高精度计时。
弹幕上屏 在数据源中选择一批弹幕上屏。对于每个时刻,将已经到展示时间的弹幕加入一个优先队列,从队列中选择不发生碰撞的(根据速度做碰撞检测)
弹幕排版 对于一条弹幕来说,上屏时间、速度、起始位置可以唯一确定该弹幕要做的动画,这些称为排版数据。选择一批要上屏弹幕并计算他们的排版数据的过程称为排版。排版可以是实时的,每帧做计算,也可以是批量的,一次性计算出接下来一段时间的。该计算依赖于弹幕测量,批量异步排版可以得到一定的性能优化。
空场景 屏幕上没有弹幕在滚动的时间范围称为空场景。空场景下停止弹幕绘制、排版计算,乃至VSYNC监听可以得到很大的性能优化,因为绝大多数视频时间都是没有弹幕的。
弹幕绘制 文本部分需要两次绘制才能画出描边。业界有直接在Canvas上绘制和使用系统View两种方案,各有优劣(前者理论性能天花板更高,后者开发特殊样式方便)。
工作做事方式
业务需求:按时交付。
在业务需求之外,要自己学会发现技术优化项,主动去提出优化方案,寻找资源,完成开发和上线。
完成开发仅仅是完成一半的工作,如果后续数据存在问题,还需要高优先级去处理,寻找解决方案。
只有成功上线的需求才是收益,否则是只有人力投入不见回报的负担。
额外收获
找到了对象。
最后修改于 2026-01-01