有没有经常用过
public static int dip2px(Context context, float dipValue) {
return (int) (dipValue * context.getResources().getDisplayMetrics().density + 0.5f);
}
public static void toast(Context context, CharSequence cs) {
...
}
等等等等
每次在你使用或封装的时候都自热而然的会加上context,但有没有想过:我为什么不能省略context呢?
现在我告诉你,当然可以,你只需要1行代码
public class MyApplication extends Application {
public static MyApplication mApp;
public SharedPreferences mSingleSp;
@Override
public void onCreate() {
super.onCreate();
mApp = this;//这里必须是第一行
mSingleSp = getSharedPreferences("xx", Context.MODE_PRIVATE);
}
}
是不是很简单,什么获取sp、什么清除缓存、什么吐司、什么dp转换、什么文件读写、什么资源获取...这些都不再需要context了。
FileUtils.getDiskCacheDir()
SPUtilImpl.getXX();
Utils.toast(”无需传context“)
Utils.dip2px(1f)
Utils.getNetWorkInfo()
DataCleanManager.cleanInternalCache()
...需要context的都可以省略
有人也许会说,你对Application静态引用不会引起内存泄漏吗?
Application即为应用程序的意思,是android应用存在内存中的标识,还是那句老话:Application在app就是活的,Application亡app就一定不在内存里了,Application的生命周期比静态常量还高,静态引用又算得了什么呢