gpt4 book ai didi

android - 持有应用程序上下文实例是一种不好的做法吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:30:30 25 4
gpt4 key购买 nike

根据我的理解,Android 中的应用程序是一个单例(如果我错了请纠正我)并且我们始终只有一个应用程序上下文实例。

那么,从这个角度来看,将应用程序上下文保存在我的应用程序类中是一种不好的做法吗?它会导致大量内存泄漏吗?

这是一个例子:

public class MyApp extends Application {
private static Context appContext = null; // <-- here is the thing!

@Override
public void onCreate() {
appContext = this;
}

public static Context getApplicationContextSingleton () {
return MyApp.appContext;
}
}

这样做的原因是全局访问的类,如 PreferencesManager,大多数具有静态方法,总是需要一个上下文。因此,我没有考虑每次都传递它(或者甚至将它存储在一个实例中,这可能很糟糕),而是考虑存储应用程序上下文。我没有看到的缺点是什么?

最佳答案

is it a bad practice to save the application Context in my Application class?

这是一种代码味道。

Can it lead to a massive memory leak?

拥有静态数据成员不会导致大量内存泄漏。过度使用 Application 对象是否会导致大量内存泄漏取决于您使用它的位置和方式。

What are the drawbacks I'm not seeing?

并非所有的 Context 都是一样的。一般来说,只有当您知道具体为什么需要Application上下文时才使用Application,而不是用于所有情况。

DoubleEncore 的 Dave Smith 有一个 awesome blog post涵盖了 Context 类型之间的差异以及何时使用它们。

关于android - 持有应用程序上下文实例是一种不好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20301989/

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