开头
最近很多网友反馈:自己从各处弄来的资料,过于杂乱、零散、碎片化,看得时候觉得挺有用的,但过个半天,啥都记不起来了。其实,这就是缺少系统化学习的后果。
为了提高大家的学习效率,帮大家能快速掌握Android开发的各个知识点。为大家整理了一套系统的Android开发者进阶学习笔记。
这套资料不仅包含**【Android开发者系统核心知识笔记】还有【2021最新大厂面试真题集锦】**,共计2983页PDF,58万字。无法全部展示
PS:这是一个高质量的Android交流圈子,群内有许多来自一线的技术大牛,也有在小厂或外包公司奋斗的码农。群成员十分活跃,在这里,不仅能获得前辈们的职场经验和指点,你的技术问题老猿们也乐于解答。
ANR面试题
1、什么是ANR
Application Not Responding,页面无响应的对话框
2、发生ANR的条件
应用程序的响应性是由ActivityManager和WindowManager系统服务监视的,当ANR发生条件满足时,就会弹出ANR的对话框
- Activity超过5秒无响应
- BroadcastReceiver超过10秒无响应
- Service超过20秒无响应
3、造成ANR的主要原因
主线程被IO操作阻塞
- Activity的所有生命周期回调都是执行在主线程的
- Service默认执行在主线程中
- BoardcastReceiver的回调onReceive()执行在主线程中
- AsyncTask的回调除了doInBackground,其他都是在主线程中
- 没有使用子线程Looper的Handler的handlerMessage,post(Runnable)都是执行在主线程中
4、如何解决ANR
- 使用AsyncTask处理耗时IO操作
- 使用Thread或HandlerThread提供优先级
- 使用Handler处理工作线程的耗时操作
- Activity的onCreate和onResume回调尽量避免耗时操作
OOM面试题
1、什么是OOM
OOM指Out of memory(内存溢出),当前占用内存加上我们申请的内存资源超过了Dalvik虚拟机的最大内存限制就会抛出Out of memory异常
2、OOM相关概念
- 内存溢出:指程序在申请内存时,没有足够的空间供其使用
- 内存泄漏:指程序分配出去的内存不再使用,无法进行回收
- 内存抖动:指程序短时间内大量创建对象,然后回收的现象
3、解决OOM
Bitmap相关
- 图片压缩
- 加载缩略图
- 在滚动时不加载图片
- 回收Bitmap
- 使用inBitmap属性
- 捕获异常
其他相关
- listview重用convertView、使用lru
- 避免onDraw方法执行对象的创建
- 谨慎使用多进程
Bitmap面试题
1、recycle
-
在安卓3.0以前Bitmap是存放在堆中的,我们只要回收堆内存即可
-
在安卓3.0以后Bitmap是存放在内存中的&#x