网站大量收购独家精品文档,联系QQ:2885784924

2023年Android高级面试题及答案整理.docxVIP

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

2023年Android面试题及答案整理

如何对Android应用进行性能分析

android性能主要是指响应速度和UI刷新速度。

函数的耗时:有一个工具叫TraceView,这是AndroidSDK自带的工作,用于测量函数耗时的。

UI布局的分析:有2块,一块就是HierarchyViewer可以看到View的布局层次,以及每个View刷新加载的时间。这样可以很快定位到那块layoutView耗时最长。

通过自定义View来减少view的层次。

2.什么情况下会导致内存泄露

什么时候会发生内存泄露?内存泄露的根本原因:长生命周期的对象持有短

生命周期的对象。短周期对象就无法及时释放。

静态集合类引起内存泄露

主要是Hashmap,Vector等,如果是静态集合这些集合没有及时setNull的话,就会一直持有这些对象。

remove方法无法删除Set集里的对象,Objects.hash(firstName,lastName)经过测试,hashcode修改后,就没有办法remove了。

observer我们在使用监听器的时候,往往是addxxxlistener,但是当我们不需要的时候,忘记removexxxlistener,就容易内存leak。

广播没有unregisterrecevier

各种数据链接没有关闭,数据库contentprovider,io,sokect,cursor等。

内部类:

java中的内部类(匿名内部类),会持有宿主类的强引用this。所以如果

是newThread这种,后台线程的操作,当线程没有执行结束时,activity

不会被回收。

Context的引用,当TextView等等都会持有上下文的引用。如果有staticdrawable,就会导致该内存无法释放。

单例:单例是一个全局的静态对象,当持有某个非静态的类A时,A无法被释放,内存leak。

3.什么是OOM异常

当程序需要申请一段“大”内存,但是虚拟机没有办法及时的给到(即使做了GC操作以后),这就会抛出OutOfMemoryException也就是OOM

Android的OOM怎么样?

为了减少单个APP对整个系统的影响,android为每个app设置了一个内存上限。

HTCM7实测,192M上限。512M一般情况下,192M就是上限,但是由于某些特殊情况,android允许使用一个更大的RAM。

4.如何避免OOM

减少内存对象的占用

ArrayMap/SparseArray代替Hashmap

避免在android里面使用Enum

减少bitmap的内存占用

inSampleSize:缩放比例,在把图片载入内存之前,我们需要先计算出一个合适的缩放比例,避免不必要的大图载入。

decodeformat:解码格式,选择ARGB_8888/RBG_565/ARGB_4444/ALPHA_8,存在很大差异。

减少资源图片的大小,过大的图片可以考虑分段加载

内存对象的重复利用,大多数对象的复用,都是利用对象池的技术。

listview/gridview/recycleviewcontentview的复用

inBitmap属性对于内存对象的复用ARGB_8888/RBG_565/ARGB_4444/ALPHA_8

这个方法在某些条件下非常有用,比如要加载上千张图片的时候。

避免在ondraw方法里面new对象

StringBuilder代替+

5.Android中如何捕获未捕获的异常

通过CrashHandler,实现Thread.UncaughtExceptionHandler接口,然后是在Aapplication的oncreate里面注册。

6.ANR是什么?

ANR-ApplicationNotResponding,也就是在规定的时间内,没有响应。

三种类型:

1).KeyDispatchTimeout(5seconds)—主要类型按键或触摸事件在特定时间内无响应

2).BroadcastTimeout(10seconds)—BroadcastReceiver在特定时间内无法处理完成

3).ServiceTimeout(20seconds)—小概率类型Service在特定的时间内无法处理完成

为什么会超时:事件没有机会处理事件处理超时

7.怎样避免和解决ANR

ANR的关键是处理超时,所以应该避免在UI线程,BroadcastReceiver还有service主线程中,处理复杂的逻辑和计算而交给workthread操作。

1)避免在activity里面做耗时操作,oncreate

文档评论(0)

duantoufa005 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档