gpt4 book ai didi

android - AsyncTask vs ExecutorService?

转载 作者:行者123 更新时间:2023-12-03 12:54:10 25 4
gpt4 key购买 nike

我必须从服务器下载文件,这些文件的大小可能约为 100 MB。以前我使用下载管理器来下载这些文件,但最终遇到了大量的错误并且不得不编写复杂的代码来跟踪下载的状态。所以我决定自己编写下载代码并在 AsyncTask 中进行下载。 (然而,这个异步任务不会在 service 中运行)。 AsyncTask似乎工作正常,我设法显示通知以跟踪下载进度。
然而,开发者网站这样说

If you need to keep threads running for long periods of time, it is highly recommended you use the various APIs provided by the java.util.concurrent package such as Executor, ThreadPoolExecutor and FutureTask.



谁能告诉我在后台长时间运行下载的 AsyncTask 到底会出现什么问题,以及为什么开发人员网站推荐 Executor 服务?也可以在没有 service 的情况下运行 AsyncTask (目前我正在做什么)?

最佳答案

主要区别在于,

  • AsyncTask类(class) 使用单线程执行器(默认情况下),它允许您执行后台操作并将结果发布到 UI 线程。它充当 Thread 和 Handler 的辅助类,允许我们操作线程和/或处理程序。
  • ExecutorService另一方面是 interface 它扩展了 Executor界面。它定义了一个合约及其底层实现,以决定如何执行并相应地管理线程。

    Android 还提供了一些抽象的默认实现,形式为 AbstractExecutorService。 .最常用的具体实现是ThreadPoolExecutor :

    Thread pools address two different problems: they usually provide improved performance when executing large numbers of asynchronous tasks, due to reduced per-task invocation overhead, and they provide a means of bounding and managing the resources, including threads, consumed when executing a collection of tasks. Each ThreadPoolExecutor also maintains some basic statistics, such as the number of completed tasks.

  • 关于android - AsyncTask vs ExecutorService?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51394985/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com