Skip to content

Latest commit

 

History

History
122 lines (110 loc) · 4.97 KB

USEINSERVICE-zh.md

File metadata and controls

122 lines (110 loc) · 4.97 KB

在Service中使用FileDownloader,下面是一个简单的示例

第一步、初始化FileDownloader 参考**中文说明文档** 中的:第二步、在你的应用application的onCreate()中初始化FileDownloader

第二步、让你的service实现OnRetryableFileDownloadStatusListener接口,并且在service的onCreate方法中注册当前service为FileDownloader的下载状态监听器, 并在service的onDestroy方法中取消注册当前service为FileDownloader的下载状态监听器。

public class YourService extends Service implements OnRetryableFileDownloadStatusListener {
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }
    @Override
    public void onCreate() {
        super.onCreate();
        // 将当前service注册为FileDownloader下载状态监听器
        FileDownloader.registerDownloadStatusListener(this);
        // 如果希望service启动就开始下载所有未完成的任务,则开启以下实现
        FileDownloader.continueAll(true);
    }
    @Override
    public void onDestroy() {
        super.onDestroy();
        // 将当前service取消注册为FileDownloader下载状态监听器
        FileDownloader.unregisterDownloadStatusListener(this);
       // 如果希望service停止就停止所有下载任务,则开启以下实现
        FileDownloader.pauseAll();// 暂停所有下载任务
    }

    @Override
    public void onFileDownloadStatusRetrying(DownloadFileInfo downloadFileInfo, int retryTimes) {
        // 发送通知或者广播
    }
    @Override
    public void onFileDownloadStatusWaiting(DownloadFileInfo downloadFileInfo) {
        // 发送通知或者广播
    }
    @Override
    public void onFileDownloadStatusPreparing(DownloadFileInfo downloadFileInfo) {
        // 发送通知或者广播
    }
    @Override
    public void onFileDownloadStatusPrepared(DownloadFileInfo downloadFileInfo) {
        // 发送通知或者广播
    }
    @Override
    public void onFileDownloadStatusDownloading(DownloadFileInfo downloadFileInfo, float downloadSpeed, long
            remainingTime) {
        // 发送通知或者广播
    }
    @Override
    public void onFileDownloadStatusPaused(DownloadFileInfo downloadFileInfo) {
        // 发送通知或者广播
    }
    @Override
    public void onFileDownloadStatusCompleted(DownloadFileInfo downloadFileInfo) {
        // 发送通知或者广播
    }
    @Override
    public void onFileDownloadStatusFailed(String url, DownloadFileInfo downloadFileInfo, FileDownloadStatusFailReason failReason) {
        // 发送通知或者广播
    }
}

第三步、在其它地方(比如应用application的onCreate方法,或者MainActivity的onCreate方法)开启service

Intent intent = new Intent(this, YourService.class);
startService(intent);

第四步、在其它地方(比如在activity或者fragment中)使用FileDownloader下载API下载文件

FileDownloader.detect(url, new OnDetectBigUrlFileListener() {// 创建一个自定义保存路径和文件名称的下载
    @Override
    public void onDetectNewDownloadFile(String url, String fileName, String saveDir, long fileSize) {
        // 如果有必要,可以改变文件名称fileName和下载保存的目录saveDir
        FileDownloader.createAndStart(url, newFileDir, newFileName);
    }
    @Override
    public void onDetectUrlFileExist(String url) {
        // 继续下载,自动会断点续传(如果服务器无法支持断点续传将从头开始下载)
        FileDownloader.start(url);
    }
    @Override
    public void onDetectUrlFileFailed(String url, DetectBigUrlFileFailReason failReason) {
        // 探测一个网络文件失败了,具体查看failReason
    }
});
FileDownloader.start(url);// 如果文件没被下载过,将创建并开启下载,否则继续下载,自动会断点续传(如果服务器无法支持断点续传将从头开始下载)
FileDownloader.pause(url);// 暂停单个下载任务
FileDownloader.pause(urls);// 暂停多个下载任务
FileDownloader.pauseAll();// 暂停所有下载任务

第五步、在service实现的OnRetryableFileDownloadStatusListener接口方法中发送通知或者广播出去

public class YourService extends Service implements OnRetryableFileDownloadStatusListener {
    @Override
    public void onFileDownloadStatusCompleted(DownloadFileInfo downloadFileInfo) {
        // 如果有必要,发送通知或者广播
    }
    @Override
    public void onFileDownloadStatusFailed(String url, DownloadFileInfo downloadFileInfo, FileDownloadStatusFailReason failReason) {
        // 如果有必要,发送通知或者广播
    }
    
    // 省略更多方法....
}

第六步、在其它地方(比如应用application的onTerminate方法,或者MainActivity的onDestroy方法)关闭service

Intent intent = new Intent(this, YourService.class);
stopService(intent);