我有一个关于安卓内存泄漏的问题。
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
和其他对象引用,从而导致我们的大部分内存泄漏问题。
静态对象的生命周期等于应用程序的生命周期,这意味着它在应用程序运行之前一直存在,并且在应用程序完成之前不能被收集。您制作了内存泄漏的基本示例。
Views
与 Activity
相关并强烈引用它,但当您将其声明为 private static View.OnClickListener listener
时,它将泄漏。
关于android - 传递任何对象时发生内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53071846/