标签:
public class Util {
private Context context;
private static Util util;
private Util(Context context){
this.context = context;
}
public static Util getInstance(Context context){
if(null == util){
synchronized (Util.class) {
if(null == util){
util = new Util(context);
}
}
}
return util;
}
}
|
public static Util getInstance(Context context){
if(null == util){
synchronized (Util.class) {
if(null == util){
util = new Util(context.getApplicationContext());
}
}
}
return util;
}
|
大家注意看到有一些NO上添加了一些数字,其实这些从能力上来说是YES,但是为什么说是NO呢?下面一个一个解释:
数字1:启动Activity在这些类中是可以的,但是需要创建一个新的task。一般情况不推荐。
数字2:在这些类中去layout inflate是合法的,但是会使用系统默认的主题样式,如果你自定义了某些样式可能不会被使用。
数字3:在receiver为null时允许,在4.2或以上的版本中,用于获取黏性广播的当前值。(可以无视)
注:ContentProvider、BroadcastReceiver之所以在上述表格中,是因为在其内部方法中都有一个context用于使用。
从上面的表格中可以看出,和UI相关的方法都不可使用Application,都应该使用Activity作为Context来处理;然后再配合工具类中Context引用的持有,防止内存泄漏,这是便能达到好的应用效果。
标签:
原文地址:http://blog.csdn.net/yuminfeng728/article/details/51346910