gpt4 book ai didi

java - 使用静态类 AppContext 是个好主意吗?

转载 作者:行者123 更新时间:2023-11-29 04:48:35 25 4
gpt4 key购买 nike

我在一个 github project 中找到了类:

public class AppContext {

private static Context sContext;
private static Application sApplication;

public static Application getApplication() {
if (sApplication == null) {
throw new IllegalStateException("AppContext.setApplication was not called in Application.onCreate() method. " +
"Please inherit your application from the com.blandware.android.atleap.BaseApplication class.");
}

return sApplication;
}

public static void setApplication(Application application) {
sApplication = application;
}

public static Context getContext() {
if (sContext == null) {
throw new IllegalStateException("AppContext.setContext was not called in Application.onCreate() method. " +
"Please inherit your application from the com.blandware.android.atleap.BaseApplication class.");
}

return sContext;
}


public static void setContext(Context context) {
sContext = context;
}
}

它接缝创建,不需要更多将上下文传递给静态函数等。但我担心内存泄漏。 AppContext 能做到吗?什么时候我应该在 Activity 上下文或 View 中使用应用程序上下文?

最佳答案

Application 对象不能泄漏。每个应用程序始终只有一个应用程序对象。看起来作者只是使用这个类来方便访问另一个上下文无法使用的地方来调用 getApplicationContext() 来获取应用程序对象。

另一方面,Context 可以是 Activity 或 Service,这些确实不应该在其生命周期之后存储。您必须准确查看此处存储了哪些 Context 对象,以查明是否存在泄漏。

关于java - 使用静态类 AppContext 是个好主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36293660/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com