xuuhaoo/OkSocket

取消回调后,还是会有连接回调

SJLBenjamin opened this issue · 0 comments

1.这是我destroy中的取消回调
@OverRide
protected void onDestroy() {
super.onDestroy();
if (mManager != null) {
mManager.unRegisterReceiver(mAllCallBack);
if (mManager.isConnect()) {
mManager.disconnect();
mBtConnect.setText(getString(R.string.begin_connect));
}
}
}
2.回调监听是成员属性,只会有一个,查看了源码,存储此对象是用vector集合,对象能保证唯一性,多次注册相同对象也不会有问题
allCallBack mAllCallBack = new allCallBack();
3.这样操作后,还是会一直连接失败的回调,不知道内存泄露的点在什么地方

后续:查看了源码 源码中会通过hashMap保存manager,外部manager重新打开通道后,上次通道需要关闭,否则还是会造成可达
因为每次连接都会开启一个新的通道,并且内部用hashMap保存了,所以外部直接将mManger=null后,内部还是持有manager-->callBack--->当前界面-->导致无法回收