Android常见问题总结(五)
16lz
2022-05-06
上一篇博客传送门:Android常见问题总结(四)
21. Android内存优化方法:ListView优化,及时关闭资源,图片缓存等等
首先有一些与内存泄漏相关的点: 关于Android内存泄露的小结,在此不再赘述了。 还有一些内存优化的方法,个人认为有以下几个方面:
- Java引用的灵活使用
- 图片缓存
- Bitmap压缩加载
Java引用的灵活使用
众所周知,在Java中有强软弱虚四种引用,合理的使用软引用和弱引用有利于GC工作的进行,回收不需要的内存。图片缓存
使用图片缓存可以有效防止内存中同时载入过多的图片,也可以减少经常载入图片所耗费的时间。 一般而言,设计图片缓存的思路如下,可以把图片的缓存分为以下几个层级:- 强引用 HashMap (用于存储最常用的图片)
- 软引用 HashMap (用于存储比较常用的图片)
- SD卡 (用于存储使用过的图片)
- 下载 (第一次使用)
Bitmap压缩加载
对于某些原尺寸特别大的图片,我们可以选择压缩后再加载以节省我们的内存空间: // 创建解析参数Options options = new Options();// 只解析大小,并不生成实际图片options.inJustDecodeBounds = true;BitmapFactory.decodeFile(pathName, options);// 计算缩放大小int widthScale = options.outWidth/width_we_need;int heightScale = options.outHeight/height_we_need;// 选取小的为缩放尺寸options.inSampleSize = Math.min(widthScale, heightScale);// 生成Bitmapoptions.inJustDecodeBounds = false; // 记得关掉Bitmap bitmap = BitmapFactory.decodeFile(pathName, options);
压缩到合适的尺寸后再加载就不必担心原来的bitmap太大而占用内存空间了。
22. Android中弱引用与软引用的应用场景
软引用与弱引用一般用于:需要某个对象,但又不关心它的死活的时候(就是该对象存在就用,不存在就算了)。 在Android中的应用场景主要有: - Handler获取Activity的引用:使用静态变量和软弱引用保证不干扰Activity的回收
- 缓存设计:使用软弱应用保证内存紧张时GC可以回收使用较少的缓存资源
24. View与View Group分类,自定义View过程:onMeasure()、onLayout()、onDraw()
View是Android中基本的UI单元,占据屏幕的一块矩形区域,可用于绘制并能处理事件,而ViewGroup是View的子类,他能包含多个View,并让他们在其中按照一定的规则排列。VIew与ViewGroup的设计使用了组合模式。 自定义View我们一般需要重写一下三个方法:
- onMeasure:用于测量自定义View的大小,在方法中必须调用setMeasureDimension方法
- onLayout:用于确定自定义View布局
- onDraw:用于绘制自定义View本身
25. Touch事件分发机制
可参考: Android View 与 ViewGroup 事件分发总结更多相关文章
- 【Android(安卓)4.0】Android(安卓)Icon Set的使用
- Android缓存浅析
- Android(安卓)ImageView 的scaleType 属性图解
- android:background="@drawable/"图片拉伸问题
- android之图片切圆角
- Android(安卓)H5和App交互以及打开图库上传图片并显示
- Android之drawable和mipmap目录区别
- Android(安卓)开发之Matrix图片处理类的使用
- Android控件之利用selector自定义的带文字的图片按钮