在android(java)中,如果我在方法内部声明了任何变量/对象引用,则在方法完成后将其从堆栈中删除。
但是,如果我在一个方法中注册了click侦听器,那么即使该方法完成后也将如何调用它。
码:
public void init() {
Button btn = findViewById(R.id.btn);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
}):
}
“如果我在方法内部声明了任何变量/对象引用,则在方法完成后将其从堆栈中删除。”
这是不正确的。如果创建任何对象,它们将保留在堆上,直到被垃圾回收为止。如果有对它们的引用(例如,对存储的侦听器的引用),则它们将持续到这些引用消失为止。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句