在我的应用程序中,当用户点击列表中的文档时,我需要提供文档的下载功能。
因此,对于多个活动线程,AsyncTask 进入了我的脑海。但我也注意到人们并没有推荐 AsyncTask 来进行这种操作。因为在这种情况下大号没有。线程将在点击文档时开始。
不采用 AsyncTask 的另一个原因是“现代 AsyncTask 仅限于 128 个并发任务”。这意味着如果您在完成之前排队的任务超过 138 个,您的应用程序将会崩溃。
- executeOnExecutor() 方法会解决我的目的还是我需要重新考虑它?
- 如果我同时启动50个任务,那么所有这些任务都通过executeOnExecutor()同时运行?
- 并发任务限制(128)也适用于executeOnExecutor()吗?
我期待完美的答案。
不采用 AsyncTask 的另一个原因是“现代 AsyncTask 仅限于 128 个并发任务”。这意味着如果您在完成之前排队的任务超过 138 个,您的应用程序将会崩溃。
更精确地,AsyncTask
的内置执行器使用 128 个元素的工作队列来处理正在等待线程的请求。但请注意,此限制没有记录在案,并且可能会发生变化。
executeOnExecutor() 方法会解决我的目的吗
这完全取决于什么样的Executor
你提供给executeOnExecutor()
.
如果我同时启动50个任务,那么所有这些任务都通过executeOnExecutor()同时运行?
不。对于初学者来说,您的 CPU 没有那么多核心。
并发任务限制(128)也适用于executeOnExecutor()吗?
仅当您设置了Executor
与这个限制。如果您使用两个内置的之一AsyncTask
执行者(SERIAL_EXECUTOR
, THREAD_POOL_EXECUTOR
),那么是的,队列限制应该到位。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)