Android - 即使在方法完成后,侦听器对象如何不被销毁?
Android - How listener object is not destroyed even after the method is finished?
在 android (java) 中,如果我在方法中声明任何 variables/objects 引用,它会在方法完成后从堆栈中删除。
但是如果我在一个方法中注册点击监听器,那么即使在该方法完成后它又是如何被调用的。
代码:
public void init() {
Button btn = findViewById(R.id.btn);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
}):
}
"If I declared any variables/objects reference inside the method, it
is removed from stack after the method is finished."
这是不正确的。如果您创建任何对象,它们将保留在 堆 上,直到被垃圾回收。如果有任何对它们的引用——例如,对存储的侦听器的引用——那么它们将持续到这些引用消失。
在 android (java) 中,如果我在方法中声明任何 variables/objects 引用,它会在方法完成后从堆栈中删除。
但是如果我在一个方法中注册点击监听器,那么即使在该方法完成后它又是如何被调用的。
代码:
public void init() {
Button btn = findViewById(R.id.btn);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
}):
}
"If I declared any variables/objects reference inside the method, it is removed from stack after the method is finished."
这是不正确的。如果您创建任何对象,它们将保留在 堆 上,直到被垃圾回收。如果有任何对它们的引用——例如,对存储的侦听器的引用——那么它们将持续到这些引用消失。