BAT 同系列公司面试总结,哪些你所不知道的,学习 android 的好书
AspectJ:依赖字节码编织器,需要按照其语法来编写,需要一点“编织”时间。
Xposed 方案,简直是一个 Bug,神器,没准以后会被 Android 修复呢,不仅可以改变自己的类行为还可以 hook 系统的方法,root 过的机器还可以 hook 其他 App 和系统进程。
###4.整体性能上如何保证探测
以及流畅性能可以根据帧率、内存、CPU、GPU 等指标的数据和表现辅助判断,可以从/proc 文件夹下读取文件获取 cpu、内存等信息,也可以用 dumpsys 命令获取帧率等信息,也可以通过 android API 获取相关信息。
还有很多性能相关的分析工具,Heap Tool、Memory Monitor、Lint、HierarchyView、WireShark、TraceView 等。
保证流畅有很多点可以去研究,比如布局、代码、缓存、网络、数据库、异步并发等方面的优化,涉及很多的知识点,可以 google 下,先简单说下。
布局充分利用 include、viewstub、merge 等标签,控制层级,避免过度渲染(绘制)。
代码上尽量使用 final、局部变量、系统函数如 arraycopy 等、位移操作是否可以代替乘除、for 循环是否可以避免 size 计算和 new 对象等等。
缓存方面,线程、位图、视图、网络数据是否可以客户缓存或者 IO 用缓冲流,充分的重复利用。
网络方面,如尽量避免轮询,控制节奏和频率,IP 直连,采用 SPDY 方案(或 HTTP2.0)来实现压缩 header、多路复用、双向通信等,API 数据压缩,多个请求是否可以合并,数据压缩和尝试 protocol buffer 相关序列化方案。
数据库方面,尝用 SQLiteStatement 代替 SQLiteDatabase 完成操作,索引和事务的充分理解和使用,注意 SQL 语句语法和拼接,采用部分查询和延迟加载。
异步并发方面,全 App 只有一个线程池,控制核心并发数量,控制超载时排队数量和策略,合理调度任务,优化业务逻辑。
最后关于帧率,你看到的视觉卡顿,直接原因基本是“掉帧”。关于帧率,尽量保证主线程里做的事情,不会超过 16 毫秒(其实这挺难的),16 毫秒大法好,具体可以去理解下 CPU、GPU、屏幕三者如何配合完成渲染的。###5.良好的架构设计根据经验,一个良好的架构设计可大致分三层
上层是 Activity、Fragment、Views&Widget 等视图渲染和业务调用。
中层是针对业务的三方库,以及主要逻辑实现,业务流程在这完成,此层还可以细分,不再多表。
底层是业务无关的框架库,用之四海而皆准,各类库内高内聚,不同库间低耦合。
这样一个结构,使得你的代码快速在 phone 和 pad 以及 tv 之间迁移,便于业务的统一编写与调用,且让各模块更为清晰。
项目结构有区别,但基本要遵循 MVC、逻辑视图分离等设计思想。以上为结构级别,再细粒度一些,推荐反复理解实践设计模式的六大原则与 23 种设计模式,让项目整体更优雅可控。自动化,智能化,约定优于配置等思想,恰当使用合需、轻量、可扩展的框架库可以帮助项目更稳定简单。
借用 Google 大神的总结就是,框架设计需要满足如下几点:简单易学;易于使用,即使没有文档;很难误用;易于阅读,代码易于维护;足够强大,可以满足需求;易于扩展;适合用户。O(∩_∩)O 哈哈~###写在最后很多人在刚接触这个行业的时候或者是在遇到瓶颈期的时候,总会遇到一些问题,比如学了一段时间感觉没有方向感,不知道该从那里入手去学习,对此我整理了一些资料,需要的可以免费分享给大家,后面也会整理比较新比较火的技术分享的
如果喜欢我的文章,想与一群资深开发者一起交流学习的话,欢迎加入我的合作群 Android Senior Engineer 技术交流群:925019412
领取方式:Android 技术交流群 925019412
评论