<分区>
下面是我阅读的有关为 Android Widgets 创建客户监听器的原型(prototype)代码。
我的问题是,如果父 View 将自己注册为“FooListener”并且父 View 维护对 FooWidget 的引用,为什么没有创建内存泄漏,因为 Widget 具有对其父项的引用并且父项可能具有引用到这个小部件?
包含 Activity 是否会在超出范围时以某种方式关闭其所有组成部分,即使其两个子项之间存在循环引用?
public class FooWidget extends View implements OnClickListener {
private FooEventListener listener;
public Button fooButton;
public FooWidget(Context context) {
super(context);
fooButton = (Button) findViewById(R.id.myFooButton);
fooButton.setOnClickListener(this);
}
public abstract class FooEventListener {
public abstract void onFoo(View v);
}
public void registerListener(FooEventListener listener) {
this.listener=listener;
}
@Override
public void onClick(View v) {
if (listener!=null) {
listener.onFoo(this);
}
}
}