超千万注册用户APP技术实现简析-android《洋葱数学》
2018-04-23 本文已影响809人
绮怀先生
洋葱数学
零,前言
洋葱数学完成超1.2亿元C轮融资
这个产品今年年初刚融资一个多亿,估值几亿人民币,因此想看看他们程序员水平怎么样,学习借鉴一下
一,通过反编译apk以及使用chalres抓包工具,得知
- 其答题界面使用webview+react实现,并非使用android原生实现
- 并且使用体验并不卡顿,webview是使用腾讯X5浏览器内核.
-
前端技术实现填空题可输入复杂的数学公式符号,这功能要是用原生实现,简直无法想象,能否实现这么复杂的数学符号输入,都有点悬.(技术选型的重要性啊!!!猿题库中的填空题就是用原生实现,)
洋葱数学答题体验.gif
二,洋葱数学android版本值得借鉴的地方:
- 其采用mvvm架构.市面上真正在项目中真正用上mvvm还是不多的,由此可见洋葱数学在架构上还是挺有追求的.
- 采用lottie 非常多的动态效果,并且较为流畅,界面灵动.有句话怎么说来着,静态界面会显得死气沉沉,而一定的动态效果,app质感顿生.
- 部分界面采用React native,技术上的多样化尝试.
- 大量使用h5(包含答题界面)非常节省开发成本
- 其中h5也是采用React实现,前端开发可以做这么多事情,不单单局限于网页实现,也能为移动端添砖加瓦.
- 基础Activity类封装有rxlifecycle ,针对Rxjava内存泄漏进行了处理
- 其视频播放也只是采用Bilibili/ijkplayer开源库,我们项目中如果以后涉及到需要视频播放的,可以借鉴.(ios和android皆有开源:https://github.com/Bilibili/ijkplayer)
- 使用fresco,感觉他们在技术上的尝试更加大胆,关于图片的操作能省心不少.即使fresco会使apk增大几M,仍然还是用了.两个字,欣赏.
CifSqf.png
CifYsx.png
三,反思
无论是《作业盒子教师端》出题列表界面,还是《学海》,亦或是《洋葱数学》都大量采用前端技术,而用原生实现的非常少.
而我们项目则是偏重于用原生实现,这就导致了在面对很多关于题目的需求时有些束手束脚,比如说:
- 学生端填空题因为有很多特殊符号无法输入(如:分数)而导致学生口算题答题体验较差
- 答题以及出题体验在低端机型上并不流畅
四,总结:
移动端的开发需要更多前端技术的添砖加瓦,不一定说要完全重构出题,答题的流程,可以在其他功能需求上采用前端技术.
前端技术在移动端上:
- 更具有需求的适应性(对于我们项目来说,公式以及特殊符号的显示)
- 也能节省不少的开发成本(不用ios以及android同时开发相同的功能)
- 前端移动框架已经非常成熟(如vue,react),而且开发的app并不卡.