ui被销毁,访问网络的线程需要取消么?
假设有个新闻列表,打开之后会启动一个线程联网读取新闻json,要是数据还没有读取完,用户就把这个ui(activity或者viewcontroller)关闭或者按home键隐藏了app,那么请问在这种情况下该怎么处理这个线程?(应该就是俗称的幽灵线程问题吧)
这里不想限制讨论android或者ios,希望能都听听大神们的思路
目前已知的思路
我搜了很多文章(android、ios),有几个大概的观点,这里列出来还请大神们指点下
1.用try..catch,如果网络线程的onsuccess里面有ui操作,就try..catch包围。
2.自己做过isDestory符,线程里判断
3.用Loader,不需要管这种事了(android)
4.用线程池,自己写一个也行,用个KV结构维护一个线程id表,onpause、ondestory或者viewdiddisapper等ui要销毁(隐藏)的时候将线程池内的线程销毁
5.在网络线程的onsuccess里加类似getActivity==null这样的判断
6.用订阅(Rxandroid或者ReactiveCocoa)不用管
求分享经验
现在说法太多了,求大神们分享下经验?如果是我现在的想法,有点想做第4种,自己写个小manager(单例模式保活)。
1.能留下你用的网络模块是什麽(如okhttp、volley、asynchttp、AFNetworking)
2.能给点demo代码说说思路
3.能说说优缺点
希望大神能讨论下,我是在github上找了很多项目型的开源项目看,在这个问题上处理也是比较模糊的。如果大神们恰巧看过处理的比较棒的项目型的项目,也求个链接学习下(android、ios均可),谢谢大家
MMTTMM
慕的地8271018
茅侃侃
相关分类