Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android:设计并发后台作业(服务、IntentService或异步任务?)_Java_Android_Android Asynctask_Android Service_Android Intentservice - Fatal编程技术网

Java Android:设计并发后台作业(服务、IntentService或异步任务?)

Java Android:设计并发后台作业(服务、IntentService或异步任务?),java,android,android-asynctask,android-service,android-intentservice,Java,Android,Android Asynctask,Android Service,Android Intentservice,我需要帮助设计一个特定于长时间运行的后台任务的问题的解决方案 背景: 我有一个带有活动的应用程序,可以显示文件列表 每个文件都可以下载。每个下载的文件都可以有一个更新 使用“立即更新”按钮将更新(如果有)作为通知激发。该应用程序有一个活动,显示每个文件的更新 在任一位置单击“立即更新”会触发后台作业下载文件,并在两个位置(取决于用户所在的位置)更新UI中的进度 用户最多可以同时更新/下载4个文件 设计: 我有一个带有WakefulBroadcastReceiver的GCM设置,它启动一个I

我需要帮助设计一个特定于长时间运行的后台任务的问题的解决方案

背景:
  • 我有一个带有活动的应用程序,可以显示文件列表
  • 每个文件都可以下载。每个下载的文件都可以有一个更新
  • 使用“立即更新”按钮将更新(如果有)作为通知激发。该应用程序有一个活动,显示每个文件的更新
  • 在任一位置单击“立即更新”会触发后台作业下载文件,并在两个位置(取决于用户所在的位置)更新UI中的进度
  • 用户最多可以同时更新/下载4个文件
设计:
  • 我有一个带有WakefulBroadcastReceiver的GCM设置,它启动一个IntentService来通知任何更新
  • 更新/下载是一个Runnable-DownloadRunnable.java文件
  • MyDownloadManager是一个单例类,它有一个静态方法startDownload(),该方法使用特定的url启动DownloadRunnable
问题:
  • 下载更新时,如何更新通知和活动中的进度
  • 如何扩展设计以运行并发下载并更新相应项目的进度
  • 我会将下载任务移动到服务中
  • 我不会自己实现它,而是使用DownloadManager系统服务,请参阅和
  • 在UI中,您可以在后台线程中查询下载状态,请参见以下问题:。与解决方案不同,我将使用一个
  • 这允许您并行执行下载。在活动中,您可以通过在后台线程中轮询来显示当前进度,但我不确定您对通知的含义是什么?DownloadManager在开始下载时显示通知


    您的下载将更加稳定,而不是使用自己的实现,因为DownloadManager可以处理连接丢失并执行重试。

    我建议使用Android的
    DownloadManager
    。这是整个操作系统使用的下载管理器。下载完成后,您将使用
    操作\U download\U COMPLETE
    接收广播

    尝试以下教程: