我对这种情况是否危险感到有些困惑:
我有一个对象,其中包含对回调侦听器的引用。在对象中的某个事件处,将调用回调侦听器。然后抽象回调函数的实现将删除对我的对象的唯一现有引用。当回调返回时,我会在事件处理程序中执行其他操作,并且还可能会操纵成员。
由于现在对该对象的唯一引用已经消失,Dalvik JVM 垃圾收集器是否会尝试对我的对象进行垃圾收集,即使我正在事件处理程序中执行剩余的工作?这会带来什么后果?
我写了一些简单而无用的代码来说明我的情况:
public SomeClass {
public abstract class CallBackListener {
public void abstract callback();
}
private CallBackListener mCb = null;
private OrgObject mObject = null;
public SomeClass() {
mCb = new CallBackListener() {
@Override
public void callback() {
mObject = null;
}
};
mObject = new OrgObject(mCb);
}
}
public class OrgObject {
private SomeClass.CallBackListener mCb = null;
public OrgObject(SomeClass.CallBackListener cb) {
mCb = cp;
}
public void event() {
//call callback
cb.callback();
//do other stuff
}
}
关于这种情况和/或做法的任何意见?
提前致谢