Android超实用最全面试大纲(三)

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是存放在内存中的,我们需要回收native层和Java层的内存
  • 官方建议我们3.0以后使用recycle方法进行回收,该方法也可以不主动调用,因为垃圾回收器会自动收集不可用的Bitmap对象进行回收
  • recycle方法会判断Bitmap在不可用的情况下,将发送指令到垃圾回收器,让其回收native层和Java层的内存,则Bitmap进入dead状态
  • recycle方法是不可逆的,如果再次调用getPixels()等方法,则获取不到想要的结果

2、LruCache原理

LruCache是个泛型类,内部采用LinkedHashMap来实现缓存机制,它提供get方法和put方法来获取缓存和添加缓存,其最重要的方法trimToSize是用来移除最少使用的缓存和使用最久的缓存,并添加最新的缓存到队列中

3、缩略图

4、保存Bitmap

5、保存到SD卡

6、三级缓存

  • 网络缓存
  • 本地缓存
  • 内存缓存

##四、UI卡顿面试题

1、UI卡顿原理

View的绘制帧数保持60fps是最佳,这要求每帧的绘制时间不超过16ms(1000/60),如果安卓不能在16ms内完成界面的渲染,那么就会出现卡顿现象

2、UI卡顿的原因分析

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
img

最后

我这里整理了一份完整的学习思维以及Android开发知识大全PDF,有需要的同学可以自行领取。

资料获取方式:Android完整知识学习体系路线

当然实践出真知,即使有了学习线路也要注重实践,学习过的内容只有结合实操才算是真正的掌握。

资料获取方式:Android完整知识学习体系路线*

当然实践出真知,即使有了学习线路也要注重实践,学习过的内容只有结合实操才算是真正的掌握。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值