我们在平时或面试遇到这些问题时,我们应该怎么回答?

1. 整体性能如何探测,有哪方面 什么指标,怎么保证更流畅
2. 讲讲架构这块,如何解耦,大项目逻辑多怎么办。
3. android的发展大事件和主要技术发展
4. avtivity(service)启动流程简述
5. 动态化的几种方案
6. 热修复的原理
7. 网络这块怎么优化
8. 数据库性能怎么保证

9. 线程安全怎么保证,异步并发这块你怎么做的

============================我~~是~~分~~割~~线=================================

1. App性能如何探测,有哪些方面,什么指标,怎么保证更流畅?

性能可以根据帧率、内存、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、屏幕三者如何配合完成渲染的,推荐老罗的博客。

猜你喜欢

转载自blog.csdn.net/u011694328/article/details/52035618