Android AsyncTask(异步) 操作使用
1、Main类
public class Main extends Activity {
private Button buttonNet;
private Button buttonPrint;
private TextView textView;
private ProgressBar progressBar;
ProgressAsync progressAsync;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
buttonNet = (Button)findViewById(R.id.buttonNet);
buttonPrint = (Button)findViewById(R.id.buttonPrint);
textView = (TextView)findViewById(R.id.textView);
progressBar = (ProgressBar)findViewById(R.id.progress_horizontal);
buttonNet.setOnClickListener(btnNet);
buttonPrint.setOnClickListener(btnPrint);
}
/**
* 用户离开屏幕,取消异步任务
*/
@Override
protected void onPause() {
if (progressAsync != null && progressAsync.getStatus() != AsyncTask.Status.FINISHED) {
progressAsync.cancel(true);
}
}
private OnClickListener btnNet = new OnClickListener() {
@Override
public void onClick(View v) {
/*NetOpertor opertor = new NetOpertor();
opertor.operate();*/
progressAsync = new ProgressAsync(textView,progressBar);
progressAsync.execute(1000);
}
};
private OnClickListener btnPrint = new OnClickListener() {
int i = 1;
@Override
public void onClick(View v) {
textView.setText("输出信息===="+i++);
}
};
}
2、NetOpertor类
/**
* 线程控制
* @author XP
*
*/
public class NetOpertor {
public void operate(){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
3、ProgressAsync执行异步操作
/**
* 执行异步操作
* @author XP
*
*/
public class ProgressAsync extends AsyncTask<Integer, Integer, String> {
private TextView view;
private ProgressBar progressBar;
public ProgressAsync(TextView view,ProgressBar progressBar) {
this.view = view;
this.progressBar = progressBar;
}
//第二步 在后台运行,所有的实际工作都是在其中完成的
@Override
protected String doInBackground(Integer... params) {
NetOpertor opertor = new NetOpertor();
for (int i = 10; i <= 100; i+=10) {
opertor.operate();
//调用第三步
publishProgress(i);
}
return "执行完毕";
}
//第1步 在后台处理开始前,这个方法在UI线程中运行,可显示进度指示器
@Override
protected void onPreExecute() {
view.setText("开始执行异步操作......");
}
//第四步 后台处理结束时,这个方法在UI线程中运行
@Override
protected void onPostExecute(String result) {
view.setText(result);
}
//第三步 每当doInBackground调用publishProgress时,都会在UI线程中运行这个方法,它接收后台处理提供的信息,可使用它更新用户看到的ProgressBar控件
@Override
protected void onProgressUpdate(Integer... values) {
progressBar.setProgress(values[0]);
}
}
相关推荐
Android AsyncTask用法和异步加载图片通过AsyncTask 从网络上异步加载一张图片
Android AsyncTask异步处理下载网页
AsyncTask_简单演示AsyncTask异步操作,写一个简单的AsyncTask异步操作解决上一篇文章提到的线程阻塞问题,对应我的博客《网易博客迁移:Android专题之AsyncTask(二)简单演示AsyncTask异步操作》,有问题欢迎留言...
Android 使用AsyncTask异步更新UI界面
Android Handler AsyncTask 异步加载
基于Android的AsyncTask异步任务, Android的AsyncTask将复杂的数据处理交由子线程, 将处理过程交由主线程处理
使用AsyncTask 异步下载图片,这次上传的案例是属于比较基础的,往后还会上传提高篇
这次上传的是AsyncTask 异步下载图片的提高篇,相比基础篇这一篇的技术含量会高一些
Android AsyncTask的简单Demo,对应Blog文章:http://blog.csdn.net/dolacmeng/article/details/50215519
Android异步处理二:使用AsyncTask异步更新UI界面。
android录音上传到服务器,上传使用AsyncTask异步任务,包含PHP服务器端,绝对能用。 就这个功能搞了 近2天,网上的内容都是同质化的,基本都是一个方式实现的 很郁闷,这个亲测绝对能用,不会用的 联系
AsyncTask 异步多线程加载Demo
android录音上传到服务器,上传使用AsyncTask异步任务.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
http://blog.csdn.net/rwyz1314/article/details/6841639 的代码。放在这里做为备份。上一个文件传错了。也没法删除。只好重新传一个。
通过AsyncTask 从网络上异步加载一张图片
AsyncTask的使用及ListView的常见优化 asyncTask异步加载数据 使用了LruCache优化图片加载 通过滑动监听提高ListView滑动流畅度.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习...
主要介绍了Android 中使用 AsyncTask 异步读取网络图片的相关资料,需要的朋友可以参考下
这是一个完整的android AsyncTask异步任务的完整实例的demo,你可以直接运行在虚拟机和真实机