Aria下载框架的使用方法

it2022-05-08  7

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()方法中反注册


最新回复(0)