现在谈到异步任务,相信大多数开发者都会直接选择 RxJava,但是仍然会有不用 RxJava 的项目。这种情况下如何来做异步任务呢?
其实不论是 RxJava 抑或是 Android 自带的 AysncTask,内部实现原理都是 Thread + Handler。如果线程想要返回 Result,那么只能使用 Callable来实现子线程,AsyncTask 便是使用的 Callable。
下面说下项目中的使用场景:
一个界面由一个列表构成,但列表的构成十分复杂,item type 很多,需要请求多个网络接口来返回所需要的数据。网络接口请求互相独立,没有依赖关系,可使用多线程进行请求。如果使用 Android 提供的 AsyncTask,则在 doInBackground 依次执行网络接口,就丧失了多线程的优势,当然你也可以在 doInBackground 再起子线程执行网络请求,然后在返回的时候使用阻塞,等到所有接口执行完毕才返回,原理其实是一样的。

