我有一个服务类,应该处理特定文件的下载。
第一个版本是使用AsyncTask编写的。由于它是一个大文件而且通过HTTPS使用DownloadManager会很棒,因此我重构了该服务以使用DownloadManager服务。
我如何自己构建一个服务类,在支持时使用DownloadManager(API级> 9),并在< 9?
时回退到AsyncTask解决方案答案 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)
回答我自己的问题,这就是我的所作所为:
DownloadService
AsyncTaskDownloadService
和DownloadManagerDownloadService
创建服务时,使用功能检测而不是构建级别(对我来说更优雅),如下所示:
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);
这将在API级别< 9时使用旧方法,并在> = 9时使用DownloadManager方法。