异步处理对于Android 开发来说是一个很重要的组成部分,不管是请求服务器,还是其它耗时工作都要用到异步处理的方式,用好它可以让程序运行更加流畅,我就目前项目使用的以及其它相关资料总结一下都有哪些方式,后续持续更新,以后再用到时可以择优使用,并对比优缺点,写出一些自己的心得。
首先总结一下有哪些场景需要用到异步处理:
1.请求服务器获取数据后更新UI的场景
2.连续下载多个文件后更新进度显示的场景
3.批量下载大量图片或者文件的场景
1. Thread +handler 的方式,适合用在场景1
2.AsyncTask 这种方式本身封装了一些进度控制的方法,适合用在场景2,当然场景1也可以用
3.ExecutorService+handler 方式适合第三种场景可以复用线程,线程开销很大大家都知道,所以大量下载需要用到这种,而且方便的控制线程结束
4.比较优秀的开源框架有RxJava和RxAndroid,即使在复杂的异步处理,也能让逻辑很清晰
其实有时候最难得还是线程的控制,每一个任务都处理的很得当
5.RxJava要比EventBus的应用更广泛,EventBus仅仅是作为一种消息的传递工具,但是RxJava里面几乎可以做任何事情。
如果是Android开发的话,可以使用RxAndroid,这是对RxJava的一个扩展,结合sqare公司的retrofit可以很轻松的完成网络的访问。
我们知道,在Android中异步操作一般使用AsycTask来完成,但是AsycTask有很多缺点,如不能方便的终止任务的执行等。
RxAndroid完全可以替代AsycTask来完成各种异步操作,而且还有BindActivity和BindFragment方法,你根本不需要考虑异步操作时的Activity和Fragment的生命周期问题,还有更加强大的的链式调用,可以使程序很简洁。
以上,推荐使用RxAndroid