Android: 关闭包含侦听器的对话框
Android: dismissing dialogs containing listeners
我正在使用两个 classes,模型 class 和 android 中的一个对话框 class。模型 class 保留了一个监听器列表,对话框将添加到该列表。
public class SmartChannelModel {
private List<OnResultsChanged> mOnResultsChanged
public interface OnResultsChanged {
void onResultsChanged(int changed);
}
public SmartChannelModel() {
mOnResultsChanged = new List<OnResultsChanged>();
}
public void addResultListener(OnResultsChanged listener) {
mOnResultsChanged.add(listener);
}
}
还有我的对话class:
public class InfoDialog extends AppCompatDialog {
private SmartChannelModel model;
public InfoDialog(Context context, SmartChannelModel model) {
super(context);
this.model = model;
}
public void update() {
//do some stuff
}
@Override
protected void onStart() {
super.onStart();
model.addOnResultsChanged(new OnResultsChanged() {
@Override
void onResultsChanged(int changed) {
update();
}
});
}
}
当我创建和关闭此对话框时,是否会对其执行垃圾回收,因为该对话框向模型添加了一个侦听器 class?我是否需要专门删除我添加的任何侦听器?
感谢您的帮助!
据我所知是的,如果 class 中的任何地方都没有提及它。
我正在使用两个 classes,模型 class 和 android 中的一个对话框 class。模型 class 保留了一个监听器列表,对话框将添加到该列表。
public class SmartChannelModel {
private List<OnResultsChanged> mOnResultsChanged
public interface OnResultsChanged {
void onResultsChanged(int changed);
}
public SmartChannelModel() {
mOnResultsChanged = new List<OnResultsChanged>();
}
public void addResultListener(OnResultsChanged listener) {
mOnResultsChanged.add(listener);
}
}
还有我的对话class:
public class InfoDialog extends AppCompatDialog {
private SmartChannelModel model;
public InfoDialog(Context context, SmartChannelModel model) {
super(context);
this.model = model;
}
public void update() {
//do some stuff
}
@Override
protected void onStart() {
super.onStart();
model.addOnResultsChanged(new OnResultsChanged() {
@Override
void onResultsChanged(int changed) {
update();
}
});
}
}
当我创建和关闭此对话框时,是否会对其执行垃圾回收,因为该对话框向模型添加了一个侦听器 class?我是否需要专门删除我添加的任何侦听器?
感谢您的帮助!
据我所知是的,如果 class 中的任何地方都没有提及它。