1、工具类的单利实现方式
错误写法:传入Activity作为上下文,那么此Activity被CommonUtils所引用,也就是说和他的静态实例有相同的生命周期
public class CommonUtils { private Context mContext; private static CommonUtils commonUtilsInstance = null; private CommonUtils(Context context){传入Activity实例会存在内存泄露的问题, this.mContext = context; } public static CommonUtils getInstance(Context context){ if (commonUtilsInstance==null){ commonUtilsInstance = new CommonUtils(context); } return commonUtilsInstance; } }解决方案:
if (commonUtilsInstance==null){ commonUtilsInstance = new CommonUtils(context.getApplicationContext());//获取Application的上下文 }