1. 将线程的内部类,改为静态内部类(因为风静态内部类拥有外部类对象的强引用,而静态类则不拥有)。
2. 在线程内部采取弱引用保存Context 引用。
查看内存泄漏的办法、对象
- android官方供给的对象:Memory Monitor(当APP占用的内存在短时光内快速增长或者GC变得频繁的时刻)、DDMS供给的Heap对象(手动触发GC)
- Square供给的内存泄漏检测对象,LeakCanary(可以或许主动完成内存追踪、检测、输出结不雅),进行演示,并且恰当的讲解。
机能优化
- 防止过度绘制,经由过程打开手机的“显示过度绘制区域”即可查看过度绘制的情况。
- 最小化衬着时光,应用视图树查看节点,对节点进行机能分析。
- 经由过程TraceView进行数据的采集以及分析。在有大年夜概定位的时刻,应用Android官方供给的Debug类进行采集。最后经由过程DDMS即可打开这个.trace文件,分析函数的调用情况(包含在指定情况下履行时光,调用次数)
- //开启数据采集
- Debug.startMethodTracing("test.trace");
- //封闭
- Debug.stopMethodTracing();
OOM
避免OOM的一些常见办法:
1. App资本中尽量罕用大年夜图。应用Bitmap的时刻要留意等比例缩小图片,并且留意Bitmap的收受接收。
- BitmapFactory.Options options = new BitmapFactory.Option();
- options.inSampleSize = 2;
- //Options 只保存图片尺寸大年夜小,不保存图片到内存
- BitmapFactory.Options opts = new BitmapFactory.Options();
- opts.inSampleSize = 2;
- Bitmap bmp = null;
- bmp = BitmapFactory.decodeResource(getResources(),
- mImageIds[position],opts);
- //收受接收
- bmp.recycle();
2. 结合组件的生命周期,释放资本
3. IO流,数据库萌芽的游标等应当在应用完之后及时封闭。
4. ListView中应当应用ViewHolder模式缓存ConverView
九切图
5. 页面切换的时刻尽量去传递(复竽暌姑)一些对象
不合的组件产生ANR 的时光不一样,主线程(Activity、Service)是5 秒,BroadCastReceiver 是10 秒。
2、Fragment的生命周期
ANR一般有三种类型:
1. KeyDispatchTimeout(5 seconds)
重要类型按键或触摸事宜在特准时光内无响应
2. BroadcastTimeout(10 seconds)
BroadcastReceiver在特准时光内无法处理完成
3. ServiceTimeout(20 seconds)
小概率类型Service在特定的时光内无法处理完成
解决筹划:
1. UI线程只进行UI相干的操作。所有耗时操作,比如拜访收集,Socket 通信,萌芽大年夜量SQL 语句,复杂逻辑计算等都放在子线程中去,然后经由过程handler.sendMessage、runonUITread、AsyncTask 等方法更新UI。
2. 无论若何都要确保用户界面操作的流畅度。如不雅耗时操作须要让用户等待,那么可以在界面上显示进度条。
3. BroadCastReceiver要进行复杂操作的的时刻,可以在onReceive()办法中启动一个Service来处理。
9、九切图(.9图)、SVG图片
点九图,是Android开辟顶用到的一种特别格局的图片,文件名以”.9.png“结尾。这种图片能告诉法度榜样,图像哪一部分可以被拉升,哪一部分不克不及被拉升须要保持原有比列。应用点九图可以包管图片在不模糊变形的前提下做到自适应。点九图常用于对话框背景图片中。

- 1、2部分规定了图像的可拉伸部分,当实际法度榜样中设定了对话框的宽高时,1、2部分就会被拉伸成所须要的高和宽,出现出于设计稿一样的视觉效不雅。
- 而3、4部分规定了图像的内容区域。内容区域规定了可编辑区域,例如文字须要被担保在其内。

11、过程间通信
- 操作体系过程间通信的办法,android中有哪些?
- 操作体系:
- Windows:剪贴板、管道、邮槽等
- Linux:定名管道、共享内存、旌旗灯号量
Android中的过程通信方法并不是完全持续于Linux:
- Bundle
- 文件共享
- AIDL
- Messenger
- Content Provider
- Socket
12、常见的收集框架
常用的http框架以及他们的特点
推荐阅读
Github年度报告盘点:TensorFlow无疑是最大赢家!
开辟者大年夜赛路演 | 12月16日,技巧立异,北京不见不散 以前十年,Github所有开辟者共享2500万公共仓库的代码,用户遍布200多个国度,应用人数达到了2400万,有6700万Repo,新增了10亿提>>>详细阅读
本文标题:Android面试17个知识点总结宝典
地址:http://www.17bianji.com/lsqh/39609.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示