gpt4 book ai didi

java - 如何在静态上下文中使用带有上下文参数的类而不会导致内存泄漏?

转载 作者:搜寻专家 更新时间:2023-11-01 07:48:03 24 4
gpt4 key购买 nike

在我的项目中我有这种情况。这是我的 MainActivity 的一部分,我已经使用 applicationContext 初始化了对象 helperClass 并将其设为静态,因为我必须在按钮的 OnClickListener:

public class MainActivity {
public static HelperClass helperClass;

@Override
protected void onCreate(Bundle savedInstanceState) {
helperClass = new HelperClass(getApplicationContext());

{...}

button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
helperClass.doSomething();
}
});
}
}

这是帮助类的一部分,我需要上下文,因为我必须在应用程序内存中存储一​​些数据:

public class HelperClass{
private Context context;

public HelperClass(Context context) {
this.context = context;
}

public void doSomething() {
File file = new File(context.getFilesDir(), "name");
{...}
}
}

现在,此代码有效,但是当我将helperClass 声明为static 时,会出现一条警告,指出这是内存泄漏;我试图从 HelperClass 中删除上下文,但我无法从该类中检索上下文;我还尝试删除静态声明,但我需要它,因为 OnClickListener 是静态上下文。

我读了here我可以使用 ApplicationContext,没关系,但这是一篇旧文章。

有没有更好的解决方案?

最佳答案

您无需为了在监听器中使用字段而将其设为静态。此外,你不应该,因为你正确地说它可能会导致内存泄漏:-)只需删除 static 关键字,运行代码,它就会工作 ^^

关于java - 如何在静态上下文中使用带有上下文参数的类而不会导致内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39792656/

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