Android多个asynctasks来获取网络响应而不是一个

时间:2016-11-23 17:38:04

标签: java android android-asynctask network-programming

这更像是一个更高层次的理解问题。

我现在要做的是运行一个Asynctask,它连续执行6个方法,每个方法都是一个不同的网络请求来检索数据。我想知道如果不是让1个asynctask串行执行这些请求,它是否会减少查询开销和获取时间,如果我将所有6个方法分离到它们的OWN Asynctasks并连续执行它们以便创建6个后台线程呢?

我现在正在使用URLConnection和InputStreamReader来获取数据。 Android系统是否允许这样的实现?如果是这样,它是否会在从各种网络呼叫中检索所有数据所需的等待时间方面提高性能?

提前致谢!

1 个答案:

答案 0 :(得分:0)

通常,即使您一起启动多个实例,AsyncTasks也会在一个线程上串行执行。如果你想并行运行它们,你会想要使用像

这样的东西
if( Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB ) {
    new MyAsyncTask().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
} else {
    new MyAsyncTask().execute();
}

为了获得更快的结果和轻松运行多个查询的能力,请考虑使用Retrofit之类的网络库而不是AsyncTask,因为它们也可以处理方向更改等常见问题。