关于MVP的一点思考(View被释放后,又调了View的方法,造成空指针)

当我们在使用 MVP 的时候(应该其他场景也有这种情况),我们在请求网络的时候,网络还没返回,这个时候View 被销毁了,那么 View 为 Null,这个时候去调用 View 的方法,就会造成空指针异常,一般来说,我们可以在销毁的时候进行cancel请求,但是也有可能没有被cancel,在这种情况下,我们可以用盘空的方法来进行处理,比如

if (view != null) {
    //todo
}

但是这样写的话就会造成所有的地方都需要写这个判空语句,很繁琐,很麻烦,今天老大说了一个比较好的处理方式,那就是 动态代理(关于动态代理怎么写 就百度吧):

@Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        if (mObject != null) {
            return method.invoke(mObject, args);
        }
        Log.e("TAGTAG", "object is  null ");
        return null;
    }

这样写的话,每次在调view方法的时候,就先判空,这样就不会每个地方都要去写 那些代码了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值