我想在我的 android 应用程序中有一个辅助类,例如 Convert 或 Utils。我遇到的典型问题是:
public class Convert {
private Convert() {
// I can't be instantiated
}
public static int pxToDp(float pixels) {
DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, pixels, displayMetrics);
}
}
以上当然失败了,因为 Convert 不知道 getResources() 是什么。所以这给我留下了两个选择:
- 每次我想使用辅助方法时都传递一个上下文,这是垃圾
子类应用程序,修改我的清单,然后创建一个引用,如下所示:
public class App extends Application { private static Context mContext; @Override public void onCreate() { super.onCreate(); mContext = this; } public static Context getContext() { return mContext; } }
然后App.getContext()
在我需要的任何地方做。
问题:这不可能是正确的,优雅的方式是什么?