我需要通过上下文访问一个方法,但是我没有办法访问它,因为这个方法所在的模块与app模块没有可见性,我不能给它,因为它会导致循环依赖错误:
private static synchronized String createDataPath(String path) {
File fileDir = context.getExternalFilesDir(path);
if (fileDir != null) {
return fileDir.getAbsolutePath();
} else {
return null;
}
}
之前,我曾经通过将上下文存储在静态变量中来获取该上下文,但这会导致内存泄漏,并且我已经看到根本不建议这样做。
当我遇到上下文问题时,我过去常常访问为我提供上下文的Application类的实例,但在这种情况下,我无法访问Application类,因为它不在我的模块中。
另一种选择是通过方法参数传递上下文,但它是一个具有数百个类和方法的项目,因此通过参数传递上下文将使我必须将上下文传递给依赖于它的所有方法,从而创建一个巨大的金字塔,这就是我想要避免的,我还有什么其他选择?
假设您的项目结构如下:
app module (depend upon these modules as below)
--- module A
--- module B
......
似乎没有片段/活动在你的模块x后,我读了你的描述。
如果我没有弄错的话,在这种情况下,您应该将上下文作为参数传入。
在我们的业务项目中,我们也使用了许多模块,其中一些模块没有任何Activity/Fragment,但我们使用了DI(e)。gdagger),将上下文作为参数传递给这些模块的构造函数方法。