gpt4 book ai didi

android - 在 AsyncTask 中跟踪文件下载的进度

转载 作者:行者123 更新时间:2023-11-29 21:50:48 25 4
gpt4 key购买 nike

我在这里问了一个类似的问题AsyncTask and Progressbar .

我正在做的是在后台 AsyncTask 中一个一个地安排下载两个以上的文件。UI 线程可能在任何时间点都需要这些文件之一,具体取决于用户交互。如果当 UI 线程要求时文件下载未完成,我需要显示该特定文件的下载进度..

我已经看到一些关于显示特定文件下载进度条的安静答案。但是我的要求有点不同。我需要跟踪后台发生的文件下载进度。

最佳答案

当您使用 AsyncTask 时,您可以选择使用 onProgressUpdate(Progress...),在调用 publishProgress(Progress...) 后在 UI 线程上调用。

例如

 private class DownloadFilesTask extends AsyncTask<File, Integer, Long> {
protected Long doInBackground(File... file) {
// This will call onProgressUpdate
publishProgress((int) ((i / (float) count) * 100));
}

// this will be called on the UI thread
protected void onProgressUpdate(Integer... progress) {
setProgressPercent(progress[0]);
}

protected void onPostExecute(Long result) {
showDialog("Downloaded " + result + " bytes");
}
}

如果您不使用 AsyncTask,您可以创建一个 Handler 并以这种方式将消息发布到 UI 线程。

但是正如您提到的文件下载需要考虑的一些事项(来自 Android 文档):-

  • 设备可能没有足够的空间容纳扩展文件,因此您应该在开始下载之前检查并在空间不足时警告用户。
  • 文件下载应在后台服务中进行,以避免阻止用户交互并允许用户在下载完成时离开您的应用。
  • 在请求和下载过程中可能会出现各种错误,您必须妥善处理。
  • 网络连接在下载过程中可能会发生变化,因此您应该处理此类变化,如果中断,请尽可能恢复下载。
  • 当下载在后台进行时,您应该提供一个通知来指示下载进度,完成时通知用户,并在用户选择后将其带回您的应用程序。

幸运的是,上述所有内容都包含在 Google 的库中,该库提供带有进度通知的下载(即使您退出应用程序)。您可以使用它,或根据自己的需要修改源代码。更多信息在这里

http://developer.android.com/google/play/expansion-files.html#AboutLibraries

关于android - 在 AsyncTask 中跟踪文件下载的进度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14466269/

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