尊重原创,转载请标明出处http://blog.csdn.net/zcxwww
我们都知道网络请求是异步的,所以就存在异步回调风险,具体来说,就是发出网络请求后,由于各种原因,如果view被回收,这时候执行回调函数就会因为找不到view而报空指针异常导致crash,而这种异步回调在我们程序中无处不在,不仅是网络请求,本地的异步任务,或者动画等都存在这种风险。可见如果不对异步回调做处理来规避这种风险,程序随时存在被crash的风险。
而处理这个问题的总体思路,一般包括两种:
1.管理request,即管理网络请求,不让发出去的request处在一个无法掌控的状态,这样我们就可以在view被回收的时候,统一cancel掉所有request,也就从根本上解决了网络请求异步回调的问题。
2.如果觉得管理所有request比较复杂,还有一种方法就是在异步回调函数里对view进行判断空,如果判断到view为null,则不执行回调,这样也能解决这个问题。
按照上面的两种思路,接下来分别给出解决方法,并给出优化的方案ÿ