异步管理机制--Asynctask详解
来源:互联网 发布:linux下python环境 编辑:程序博客网 时间:2024/06/04 20:01
异步管理机制–Asynctask详解
本文参考:
- android开发者官网
- Android AsyncTask完全解析,带你从源码的角度彻底理解
- Android 多线程—–AsyncTask详解
- Android 应用开发 之通过AsyncTask与ThreadPool(线程池)两种方式异步加载大量数据的分析与对比
- 译文:Android中糟糕的AsyncTask
- Android AsyncTask 原理浅析
- Android 异步任务——AsyncTask (附使用AsyncTask下载图片Demo)
- Android 异步AsyncTask下载 含有进度条
- Android使用AsyncTask实现可以断点续传的DownloadManager功能
- android中如何下载文件并显示下载进度
DownloadFilesTask.java
public class DownloadFilesTask extends Activity implements OnClickListener{ private ProgressDialog progressDialog= null; private ProgressBar progressBar; private Button downloadBt; static class Downloader{ static long downloadFile(URL url){ long i = 0; try { sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } i+=1; return i; } } private class DownloadFiles extends AsyncTask<URL, Integer, Long> { protected void onPreExecute() { progressDialog.show(); // 显示进度对话框 } @Override protected Long doInBackground(URL... urls) { int count = urls.length; long totalSize = 0; for (int i = 0; i < count; i++) { totalSize += Downloader.downloadFile(urls[i]); publishProgress((int) (((i+1) / (float) count) * 100)); // Escape early if cancel() is called if (isCancelled()) break; } return totalSize; } @Override protected void onProgressUpdate(Integer... progress) {// setProgressPercent(progress[0]); progressBar.setProgress(progress[0]); } @Override protected void onPostExecute(Long result) { super.onPostExecute(result); Toast.makeText(DownloadFilesTask.this, "下载完成,总量为"+result, Toast.LENGTH_SHORT).show(); downloadBt.setEnabled(true); //消失弹出框 progressDialog.dismiss(); progressBar.setProgress(0); } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_download_files_task); downloadBt = (Button) findViewById(R.id.downloudBt); downloadBt.setOnClickListener(this); } @Override public void onClick(View v) { // TODO Auto-generated method stub //注意每次需new一个实例,新建的任务只能执行一次,否则会出现异常// download.setEnabled(false); progressDialog = new ProgressDialog(this); progressDialog.setTitle("提示信息"); progressDialog.setMessage("正在下载中,请稍后......"); // 设置setCancelable(false); 表示我们不能取消这个弹出框,等下载完成之后再让弹出框消失 progressDialog.setCancelable(false); // 设置ProgressDialog样式为圆圈的形式 progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); progressBar = (ProgressBar) findViewById(R.id.progress_bar); URL url1 = null; try { url1 = new URL(getString(R.string.test_mp3)); } catch (MalformedURLException e) { e.printStackTrace(); } URL url2 = null; try { url2 = new URL(getString(R.string.test_mp3)); } catch (MalformedURLException e) { e.printStackTrace(); } URL url3 = null; try { url3 = new URL(getString(R.string.test_mp3)); } catch (MalformedURLException e) { e.printStackTrace(); } new DownloadFiles().execute(url1, url2, url3); }}
layout/activity_download_files_task.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <Button android:id="@+id/downloudBt" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="下载" /> <ProgressBar android:id="@+id/progress_bar" android:layout_width="fill_parent" android:layout_height="wrap_content" android:progress="0" android:max="100" android:layout_alignParentBottom="true" style="?android:attr/progressBarStyleHorizontal"/></RelativeLayout>
0 0
- 异步管理机制--Asynctask详解
- Asynctask异步任务详解
- 异步任务AsyncTask详解
- 异步任务AsyncTask详解
- AsyncTask类详解 异步执行
- Android--AsyncTask异步加载详解
- Android异步加载AsyncTask详解
- 异步操作类AsyncTask 详解
- AsyncTask异步任务使用详解
- Android异步任务AsyncTask详解
- android异步类AsyncTask详解
- Android异步加载AsyncTask详解
- Android异步加载AsyncTask详解
- AsyncTask(异步线程)详解
- AsyncTask异步方式详解及其使用
- AsyncTask异步方式详解及其使用
- android异步任务设计思详解(AsyncTask)
- android异步任务设计思详解(AsyncTask)
- 黑马程序员——String,StringBuffer和基本数据类型对象包装类
- ios-日记1
- CSS选择器笔记
- C++文件读取、数组转存、文件另存
- 黑马程序员——网络编程之 TCP 编程
- 异步管理机制--Asynctask详解
- android颜色大全
- 创建Java线程池
- 内存分配函数---realloc
- 任务调度Quartz参数详解
- Nova 建立一个虚机的流程
- Duilib技巧:背景图片平铺
- 黑马程序员--Java基础Day04
- java同步包装器与线程安全