AsyncTask 使用,方法详解
来源:互联网 发布:mysql syntax 编辑:程序博客网 时间:2024/06/05 21:55
AsyncTask 处理异步任务比较强大的一个类
使用是注意不用是及时cancel掉任务,不要阻塞之后任务的执行
public class AsyncTaskTest { private volatile DownloadFilesTask task; /** * AsyncTask<Params, Progress, Result>三个泛型参数的作用对应执行方法 * Params doInBackground(Params... params) 异步任务参数 * Progress onProgressUpdate(Progress... values) 状态刷新参数 * Result onPostExecute(Result result) 返回结果参数 */ private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> { @Override protected Long doInBackground(URL... urls) { // TODO: 17-10-31 执行耗时操作 int cunt = urls.length; long totalSize = 0; int percentage; for (int i = 0; i < cunt; i++) { URL url = urls[i];// totalSize += Downloader.addDownload(url);// 刷新当前进度 publishProgress(Math.min(Math.max(i, 0), 100));// 如果已经被Cancelled掉及时退出,因为被Cancelled掉的不会执行onPostExecute() if (isCancelled()) { break; } } return totalSize; } @Override protected void onProgressUpdate(Integer... values) { super.onProgressUpdate(values); // TODO: 17-10-31 用于刷新进度条,判断当前执行进度使用 //刷行进度需要在 doInBackground()实现方法中调用publishProgress() } @Override protected void onCancelled() { super.onCancelled(); // TODO: 17-10-31 Cancelled 的回调 } @Override protected void onPostExecute(Long aLong) { super.onPostExecute(aLong); // TODO: 17-10-31 执行返回结果 } @Override protected void onPreExecute() { super.onPreExecute(); // TODO: 17-10-31 执行时调用 UI } } public void startExecute(URL... url) { // TODO: 17-10-31 execute() 是可变参数 task = new DownloadFilesTask(); task.execute(url); } public void Cancel(boolean mayInterruptIfRunning) { // TODO: 17-10-31 mayInterruptIfRunning 参数的含义 如果doInBackground中的没有执行完成是否让它执行完 task.cancel(mayInterruptIfRunning); }}
阅读全文
0 0
- AsyncTask 使用,方法详解
- AsyncTask常用方法详解
- AsyncTask的使用详解
- AsyncTask使用详解
- AsyncTask的使用详解
- Android AsyncTask使用详解
- AsyncTask使用详解
- AsyncTask---详解Android中AsyncTask的使用
- 【AsyncTask】详解Android中AsyncTask的使用
- Android AsyncTask的使用详解
- Android 详解AsyncTask的使用
- AsyncTask异步任务使用详解
- Android中AsyncTask使用详解
- Android中AsyncTask使用详解
- Android中AsyncTask使用详解
- Android中AsyncTask使用详解
- AsyncTask异步方式详解及其使用
- 详解Android中AsyncTask的使用
- Webpack详细入门教程(四)之Source Maps调试
- js实现全国三级城市联动select选择
- 64.设计模式笔记-Builder模式
- Collection包结构,与Collections的区别。
- uWsgi的安装与测试
- AsyncTask 使用,方法详解
- javascript livequery 实例
- POJ 1573 Robot Motion 搜索找一个循环
- html+css+js编码规范
- linux tar压缩排除某个文件夹
- python异常处理
- 基础练习 十六进制转十进制
- try catch finally,try里有return,finally还执行么?
- lintCode入门篇之整数排序--直接插入