废话不多说,上代码,我写了一个提供下载地方法,只需要传入一个url即可,
调用这个startdown方法后,就会弹出一个dialog,开始的时候,遇到了一个问题,就是我下载了一半,如果不想下载了,想取消怎么办,我开始用的是
dialog.dismiss();
这段代码,但是后来发现不行啊,因为这样仅仅是取消了dialog,由于没有做断点下载,所以在想怎么取消这个线程,阻止下载,修改代码
在请求okhttputils的时候,给它加上一个tag,然后看看里面的取消的源码
然后再取消的里面调用了一下,好了,阻止了下载了,大牛勿喷,新手笔记...
public void startdown(final String urls) { final ProgressDialog dialog = new ProgressDialog(mContext); dialog.setTitle("正在下载"); dialog.setCancelable(true); dialog.setCanceledOnTouchOutside(false); dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); dialog.setButton(DialogInterface.BUTTON_NEGATIVE, "取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); OkHttpUtils.getInstance().cancelTag(urls); } }); dialog.show(); Callback call=new FileCallBack(Environment.getExternalStorageDirectory().getAbsolutePath(), "down") { @Override public void onError(Call call, Exception e, int id) { } @Override public void inProgress(float progress, long total, int id) { super.inProgress(progress, total, id); dialog.setProgress((int) (100 * progress)); } @Override public void onResponse(File response, int id) { Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); intent.addCategory(Intent.CATEGORY_DEFAULT); intent.setDataAndType(Uri.fromFile(response), "application/vnd.android.package-archive"); ((Activity)mContext).startActivityForResult(intent,0); } }; OkHttpUtils .get().tag(urls) .url(urls) .build() .execute(call);