场景描述:之前笔者接受一个多Activity多Fragment架构的app,但是发现其中的页面Activity中,总是存在网络请求的泄漏(通过LeakCanary可以发现),另外请求返回的OnSucess方法里经常出现各种view为空。显然,view是正常初始化的。这不是那个请求会必现,而是在跑monkey的时候,还是会经常报一批空指针问题,显示view为空。
- 显然的,线程里回调发生的时候,线程所在的Activity或者根View 已经销毁,我们的返回的时候,view所依赖的Activity生命周期已经走过了OnDestroy()。
怎么处理呢?在callBack的基类里,传入Activity,并判断Activity的状态,至此,基本不会在出现这种空指针问题。
部分代码展示:
public abstract class JsonCallBack<T> extends AbsCallback<T> implements ParameterizedType {
@Override
public void onCacheSuccess(com.lzy.okgo.model.Response<T> response) {
super.onCacheSuccess(response);
if (mWeakReference.get().isFinishing()) {
return;
}
onSuccess(response);
}
@Override
public void onSuccess(com.lzy.okgo.model.Response<T> response) {
if (mWeakReference.get().isFinishing()) {
return;
}
}
}
网友评论