Android:AsyncTask中的HTTP请求不是并发的
我正在为写一个粉丝应用程序,它显示了未来几天的放映日历。每天的电影列表是通过从网站上获取的(答案包含希伯来语,因此如果你点击链接并听到一些胡言乱语,可能就可以了) 该应用程序显示了未来八天的日程安排,因此它每天会通过日程安排请求拨打8个电话Android:AsyncTask中的HTTP请求不是并发的,android,concurrency,android-asynctask,Android,Concurrency,Android Asynctask,我正在为写一个粉丝应用程序,它显示了未来几天的放映日历。每天的电影列表是通过从网站上获取的(答案包含希伯来语,因此如果你点击链接并听到一些胡言乱语,可能就可以了) 该应用程序显示了未来八天的日程安排,因此它每天会通过日程安排请求拨打8个电话 private class GetMoviesTask extends AsyncTask<Integer, Void, List<Film>> 问题是AsyncTask不是并发执行的。日子一天接一天慢慢地过去了,这真是太慢了:
private class GetMoviesTask extends AsyncTask<Integer, Void, List<Film>>
问题是AsyncTask不是并发执行的。日子一天接一天慢慢地过去了,这真是太慢了:
并发启动这些异步调用的最佳方法是什么?基本上,AsyncTask只为您创建一个在后台运行的线程 你可以通过两种方式实现你想要的
- 首先,您可以为每个操作创建单独的异步任务
- 其次,在doInBackground方法中创建多个线程并进行并发请求和进程。之后,您可以通过将这些线程发布到onProgressUpdate或onPostExecute来通知UI
AsyncTask
在安卓4.x中出现了倒退,系统一次执行一个任务,而不是像安卓1.6以来那样并发执行。这是出于设计:基本上,在较新的平台上,您可以通过调用executeOnExecutor()
而不是execute()
来恢复到旧的并发行为。马克·墨菲(被称为StackOverflow)在他的博客上发表了一篇文章。为什么它必须是平行的?为什么不按顺序进行呢?”我想在这种情况下,我会考虑顺序的HTTP呼叫,这是一种专业的尴尬。当我可以在~TIME\u PER\u CALL
中即时提供信息时,为什么要让用户等待8*(每次通话的时间)
。谢谢你的链接!
for (int i=0; i<NUMBER_OF_DAYS_TO_VIEW; i++){
new GetMoviesTask().execute(i);
}