在我的应用程序中,当用户点击列表中的文档时,我需要为文档提供下载功能。
因此,对于多个活动线程AsyncTask进入我的脑海。但我也注意到人们没有推荐AsyncTask用于这种操作。因为在这种情况下大号没有。线程将开始点击文档。
不采取AsynTask的另一个原因是"现代AsyncTask仅限于128个并发任务"。意味着如果您在完成之前排队超过138个任务,您的应用程序将崩溃。
我期待完美的答案。
答案 0 :(得分:1)
不采取AsynTask的另一个原因是"现代AsyncTask仅限于128个并发任务"。意味着如果您在完成之前排队超过138个任务,您的应用程序将崩溃。
更准确地说,AsyncTask
的内置执行程序使用128个元素的工作队列来处理等待线程的请求。但请注意,此限制未记录在案,可能会发生变化。
executeOnExecutor()方法会解决我的目的吗
这完全取决于您向Executor
提供的executeOnExecutor()
。
如果我同时启动50个任务,那么所有这些任务都会通过executeOnExecutor()运行simeltenioulsy?
没有。首先,你的CPU没有那么多内核。
并发任务限制(128)也适用于executeOnExecutor()?
仅当您设置具有该限制的Executor
时。如果您使用两个内置AsyncTask
执行程序之一(SERIAL_EXECUTOR
,THREAD_POOL_EXECUTOR
),那么是,那个队列限制应该到位。