使用MANY AsyncTasks会让我的Android应用运行得更快吗?

时间:2014-10-15 18:19:21

标签: java android multithreading performance android-asynctask

我知道AsyncTasks可以在不同的线程上运行。因此,在我登录用户后,我应该抓住他们的朋友姓名,个人资料图片等等,所有人都使用不同的asynctasks但同时最小化时间?

3 个答案:

答案 0 :(得分:2)

是和否

使用多线程并不一定意味着可以更快地完成工作。

你运行的线程越多,你的上下文切换就越多。

如果您要使用普通线程,我建议您使用线程池,这样事情就不会失控。

Asynctasks在内部使用池,并且有两种模式可以操作,串行或并行。

如果使用execute()方法,它将在运行API少于13的设备上并行运行,并在运行稍后API的设备上串行运行

在API 13使用executeOnExecutor()

之后强制并行行为

对于具有多个内核的设备,请选择并行行为,具有单核的设备,许多线程必然会减慢速度

答案 1 :(得分:0)

您通常应该根据您的需要仅使用最小的线程子集。您通常只应将AsyncTasks用于可在短时间内运行的组件,并且需要与其他任务分开地与UI组件进行交互。

默认情况下,ThreadPoolExecutor将决定在调用它们时多个AsyncTasks的序列化程度。尝试在单个AsyncTask中执行小任务,如果需要更长时间运行的线程,请考虑执行在后台运行的服务。

答案 2 :(得分:0)

是的,如果您想将所有数据存储在数据库中,并且可以使用不同的操作,则可以。

但是在最多5到6次asyncTask将运行并且如果它们正在运行并且您想要在用户操作上执行一些其他asynctask那么这将进入队列并且在这种情况下用户可能需要更多时间来进行操作。有关多个asynctask的更多详细信息,请参阅此主题..

This

我希望这一切都能清楚你的想法。