gpt4 book ai didi

android - 传递任何对象时发生内存泄漏

转载 作者:行者123 更新时间:2023-11-29 00:58:12 26 4
gpt4 key购买 nike

我有一个关于安卓内存泄漏的问题。

 public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

MyClass m = new MyClass();
m.setListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

}
});
}

}

public class MyClass {

private static View.OnClickListener listener;

public void setListener(View.OnClickListener listener) {
this.listener = listener;
}
}

它会导致内存泄漏吗?如果是,为什么?通过监听器是一种很好的技术吗?

最佳答案

静态字段 具有潜在危险,因为它们可以被 Actvities 和其他对象引用,从而导致我们的大部分内存泄漏问题。

静态对象的生命周期等于应用程序的生命周期,这意味着它在应用程序运行之前一直存在,并且在应用程序完成之前不能被收集。您制作了内存泄漏的基本示例。

ViewsActivity 相关并强烈引用它,但当您将其声明为 private static View.OnClickListener listener 时,它将泄漏。

关于android - 传递任何对象时发生内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53071846/

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