几个常用的异步框架和网络访问框架区分对比

Part1:

由于在我们的程序中,不允许一些耗时的任务在主线程中出现,主要是为了防止阻塞主线程而导致的 Anr(Application not Responding),一些耗时任务主要包括:

网络访问,缓慢的磁盘操作,比较耗时的算法

当我们的主线程在一定时间里对某一事件的处理超过一定时间后会主线程会崩溃报ANR,

通常的解决方案:采用子线程技术来将耗时任务与主线程进行脱离

1、handler机制

只需要将UI更新参数在子线程中使用sendMessage发送到定义好的Handler里的handleMessage里既可以在主线程中更新UI(Handler实现了从子线程到主线程之间的跳转)

2、runOnUiThread方法

使用这个方法,既可以使得当前主线程获取cpu资源,从而进行UI的更新(至于如何从子线程中返回数据,方法很多,比如使用接口来回调获取参数)

3、使用我们熟悉的AsyncTask类

AsyncTask使用详解和源码分析


Part2:网络访问

大家都熟知的右HttpClient和HttpUrlConnection两种方式,当然还有像Volley和OkHttp以及AsyncHttpClient

针对前两种最原始基础的方式,是不具备异步处理能力的,也就是需要我们配合part1里的异步处理框架来使用,否则就只能接受ANR这赤裸裸的尴尬

Volley则是具备了异步访问的能力而且访问结束的回调方法是处于主线程中的,这样就可以直接脱离异步访问框架来单独使用了(还能够替代Universal-Image-Loader异步加载图片喔)Volley使用详解

AsyncHttpClient则是对HttpClient的一种异步封装,它对于Volley的一个缺陷就是回调方法依然处于子线程中,我们依然需要使用part1里的异步框架来解决问题

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值