Context部分
View的构造函数
View.java
View 保存了对context的引用,mContext = context;
1.我们知道结构其实和DOM差不多,都会保存其父容器、子容器的引用,因而context的使用需要注意,不要使用静态的子View。
2.来看View中的setBackgroundDrawable方法
View.java
我们注意到d.setCallback(this);
即Drawable保存了View的引用,处理了一些回调。因此,Drawable对象使用时需要注意了。不要作为静态对象使用。
Resource.getDrewable()方法是比较好的,Resource内部使用了一个Drawable.ConstantState的弱引用缓存,提高了效率。
来看代码:
Resource.java
使用Drawable一般情况下效率较高,且不易发生内存泄露。
接下来我们来看下BitMap的使用
BitMapFactory.java
我们每次调用BitMapFactory中的生产bitmap的方法的时候都会new一个bitmap出来,为了避免内存溢出,我们有两种主要的思路:
1. 使用缓存,避免重复new同一个图片
2. 销毁bitmap,使用完之后立刻销毁bitmap
缓存需要自己实现,如果是销毁的话,可以使用Bitmap中的recycle()方法。