Aria下载框架的使用方法

1.onCreate()方法中注册

2.下载回调方法,去更新进度条,和暂停、失败、下载、开始等状态

   注意:自定义按钮状态,随着回调的状态改变自己的状态

                此处暂停的回调方法,会在下载中失败了,重新下载;实际应用中此时状态还是应该是等待的状态;

                此处刚关闭页面重新进来时,用框架给的状态也是不对的,当你本应是等待状态时,却还是暂停状态了;

所以状态我们需要自己记录,下载进度最好也在本地数据库记录好;

3.项目中同时进行几个不同的下载任务时,获取所有的下载任务会返回全部的所以会乱

          List<AbsEntity> temps = Aria.download(this).getTotalTaskList();

                    此时也是最好从自己的本地数据库取数据最好;

4.开始下载

1)获取数据源中的item
String url = (String) v.getTag();
int index = getPositionFromUrl(url);
if(index != -1){
    NaviOfflineDbBean dbBean = datas.get(index);
    2)开始下载此item
    Aria.download(mContext)
            .load(url)
            .setFilePath(DownLoadRootPath + File.separator + dbBean.getLoacalPath() + ".std")
            .start();
     3)改变数据源的状态并刷新
    dbBean.setState(STATE_RUNNING_BUTTON);
    notifyDataSetChanged();
     4)更新数据库状态为正在下载
    NaviOfflineDbManager.getInstance().updateDBDownloadStatus(STATE_RUNNING_BUTTON,url,mContext);

改变数据源状态,此时需要在给onclickView的View设置tag,设置一个url,从数据源中对比那个position,再改变数据源中的状态,然后再刷新

做此类列表的item刷新必须从数据源更新,其他方式都会混乱

 

注意:ListView刷新问题

1》数据源改变要找到position
2》数据源 通过set来改变并刷新
        datas.set(position,bean);
        notifyDataSetChanged();
3》如果View没有及时改变那可以去刷新View
     设计中开始下载和暂停下载改变不同的颜色,但是数据源改变了,也刷新了,可是View颜色确实没有改变,所以增加了下面这句话很灵敏了。
    holder.pb.postInvalidate();

 

5.暂停下载

Aria.download(mContext).load(url).stop();

6.删除下载任务

Aria.download(mContext).load(url).cancel(true);

7.在activity中创建回调方法

@Download.onPre
void onPre(DownloadTask task) {
    LogUtils.i(LogUtils.FROM_XQ, "WRAN_" + TAG + "onPre", task.getTaskName());
    downloadAdapter.updateState(task.getEntity());
}

@Download.onTaskStart
void taskStart(DownloadTask task) {
    LogUtils.i(LogUtils.FROM_XQ, "WRAN_" + TAG + "taskStart", task.getTaskName());
    downloadAdapter.updateState(task.getEntity());
}

@Download.onTaskResume
void taskResume(DownloadTask task) {
    if(downloadAdapter != null && task != null) {
        downloadAdapter.updateState(task.getEntity());
    }
}

@Download.onTaskStop
void taskStop(DownloadTask task) {
    if(downloadAdapter != null && task != null) {
        downloadAdapter.updateState(task.getEntity());
    }
}

@Download.onTaskCancel
void taskCancel(DownloadTask task) {
    if(downloadAdapter != null && task != null) {
        downloadAdapter.updateState(task.getEntity());
    }
}

@Download.onTaskFail
void taskFail(DownloadTask task) {
    if(downloadAdapter != null && task != null) {
        downloadAdapter.updateState(task.getEntity());
    }
}

@Download.onTaskComplete
void taskComplete(DownloadTask task) {
    if(downloadAdapter != null && task != null) {
        downloadAdapter.updateState(task.getEntity());
    }
}

@Download.onTaskRunning()
void taskRunning(DownloadTask task) {
    if(downloadAdapter != null && task != null) {
        downloadAdapter.updateState(task.getEntity());
    }
}

7.onDestory()方法中反注册

    原文作者:yangaiyu
    原文地址: https://blog.csdn.net/yangaiyu/article/details/98170474
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞