我正在使用Android Studio,我想知道应用程序的目录(指每个非静态类)。
问题是,我正在创建一个名为常量的类来总结我的应用程序中的任意常量。除与应用程序目录相关的常数外,我的所有常数当前都是静态的和公共的。我还实现了Serializable,将常量文件存储在某个文件中。我将通过constants类中的静态方法导出和导入常量。完全静止(真的:))
我知道Context类中的getFilesDir()不是静态的,这意味着我不能调用MainActivity之类的东西。getFilesDir()。getAbsolutePath(),其中MainActivity扩展Activity扩展上下文。
我也不能做这样的事:
public transient static MainActivity someActivity = new MainActivity();
public transient static String parentAbsolutePath = someActivity.getFilesDir().getAbsolutePath();
因为它将在现有UI线程之外创建一个新的UI线程。
我知道有一种简单的方法可以做到这一点,那就是将MainActivity传递给构造函数,如下所示:
class Constants implements Serializable {
public transient static MainActivity mainActivity;
public transient static String parentAbsolutePath;
Constants(MainActivity mainActivity){
this.mainActivity = mainActivity;
this.parentAbsolutePath = mainActivity.getFilesDir().getAbsolutePath();
}
}
然而,实例化起来很麻烦
Constants constants = new Constants(this)
在MainActivity中,它还缺乏模块化,其他类在没有实例化对象的情况下无法使用该类。
所以我的问题是,有没有一种方法可以访问类常量中的应用程序目录,而不必传入上下文扩展对象?