在新东方在线项目开发过程中,作为 Android 组的 Leader,我主要负责整体架构设计、 功能迭代、性能、体验优化。解决问题如下: 为了优化内存,了解到 zygote 在 fork 的新进程会继承预加载的 resource 资源,这些 资源基本是系统的资源,然后通过反射获取将其移除。降低内存 20M 左右 为了提升崩溃日志写入速度,使用了基于 mmap 的 MappedbyteBuffer 减少系统拷贝 到内核带来的性能损耗,提升速度数倍 为了优化包体积,采用动态加载 so,方案是往 nativeLibraryPathElements 的最前 面插入一个 NativeLibraryElement, 还包括资源加载采用 xxhdpi 一套、混淆代码 为了减少崩溃带来的用户损失率,打造了一个不闪退的 app,通过虚拟机调用 thread 的 dispatchUncaughtExecption,来到我们自己的 uncaughtException 方法,清空所有状 态信息,推出当前的 activity,不触发系统的检测(卸载 app) 优化 mvp 架构,P 调用 V 时每次判断不为 null,在基类中采用代理统一判断,通过 注解的方式解决 V 中对应多个 P 的多次创建 为了检测项目运行的流畅度,使用了 Looper 配合 Choreographer 实现了每个 Activity 的帧率信息统计