使用API​​ Level 9+上的DownloadManager下载文件,然后回退到AsyncTask< 9

时间:2014-09-25 14:17:02

标签: android http download android-2.3-gingerbread android-download-manager

我有一个服务类,应该处理特定文件的下载。

第一个版本是使用AsyncTask编写的。由于它是一个大文件而且通过HTTPS使用DownloadManager会很棒,因此我重构了该服务以使用DownloadManager服务。

我如何自己构建一个服务类,在支持时使用DownloadManager(API级> 9),并在< 9?

时回退到AsyncTask解决方案

2 个答案:

答案 0 :(得分:0)

  

我如何自己构建一个使用DownloadManager的服务类   支持(API级> 9)并在何时回退到AsyncTask解决方案   < 9

创建您的服务并检查build版本是否大于9运行downloadmanager否则运行asynctask

if(Build.VERSION.SDK_INT > 9){
   //Create your downloadmanager and its request
}else{
    //start using asynctask
}

答案 1 :(得分:0)

回答我自己的问题,这就是我的所作所为:

  1. 构建一个抽象服务基类,例如DownloadService
  2. 扩展到具体的子类,例如AsyncTaskDownloadServiceDownloadManagerDownloadService
  3. 创建服务时,使用功能检测而不是构建级别(对我来说更优雅),如下所示:

    Activity activity = getActivity();
    Object downloadService = activity.getSystemService(Context.DOWNLOAD_SERVICE);
    Class serviceClass = AsyncTaskDownloadService.class;
    if (downloadService != null) {
        serviceClass = DownloadManagerDownloadService.class;
    }
    Intent serviceIntent = new Intent(activity, serviceClass);
    activity.startService(serviceIntent);
    
  4. 这将在API级别< 9时使用旧方法,并在> = 9时使用DownloadManager方法。