有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在应用程序类不可见的模块中获取上下文?

我需要通过上下文访问一个方法,但我无法访问它,因为此方法所在的模块与应用程序模块不可见,我无法将其提供给它,因为它会导致循环依赖错误:

private static synchronized String createDataPath(String path) {
    File fileDir = context.getExternalFilesDir(path);
    if (fileDir != null) {
        return fileDir.getAbsolutePath();

    } else {
        return null;
    }
}

以前,我通过将上下文存储在静态变量中来获取该上下文,但这会导致内存泄漏,我已经看到,根本不建议这样做

当我遇到上下文问题时,我通常访问为我提供上下文的应用程序类的实例,但在这种情况下,我无法访问应用程序类,因为它不在我的模块中

另一个选项是通过方法参数传递上下文,但这是一个有数百个类和方法的项目,因此通过参数传递上下文将使我不得不将上下文传递给依赖它的所有方法,从而创建一个巨大的金字塔,这就是我试图避免的,我还有什么其他选项


共 (1) 个答案

  1. # 1 楼答案

    假设您的项目结构如下所示:

    app module (depend upon these modules as below) 
         - module A 
         - module B 
        ...... 
    

    在我读了你的描述之后,你的模块x中似乎没有碎片/活动

    如果我没有弄错的话,在本例中,您应该将上下文作为参数传入

    在我们的业务项目中,我们还使用了许多模块,其中一些模块没有任何活动/片段,但我们使用了DI(例如dagger),将上下文作为参数传递给这些模块中的构造函数方法