声明: 本人菜鸟一枚, 本博客是本人自学的内容, 适用于初学者, 不喜勿喷, 谢谢大家
简单介绍
我们通过一个例子来说明该AsyncTask的使用方法:
首先, 我们需要实现一个类, 继承自AsyncTask,. 每个方法的的用法都在代码注释中有
需要注意的是, 模板参数: AsyncTask< Params, Progress, Result >, 这几个参数对应的是哪几个
/**
* 通过一个AsyncTask实现一个异步任务
* 模板参数: AsyncTask<Params, Progress, Result>
*/
private static class MyAsyncTask extends AsyncTask<String, Integer, String> {
private MainActivity activity;
public MyAsyncTask(MainActivity activity) {
this.activity = activity;
}
/**
* 执行任务支持触发的方法, 可以在该方法中做一些初始化工作
*/
@Override
protected void onPreExecute() {
super.onPreExecute();
activity.info.setText("开始执行.....");
}
/**
* 执行后台任务的方法
* 在子线程中执行, 不能在该方法中访问UI组件
*
* @param params
* @return
*/
@Override
protected String doInBackground(String... params) {
for (int i = 0; i < 10; i++) {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(i);
publishProgress(i);//更新进度
}
return "success";
}
/**
* 更新进度值
*
* @param values
*/
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
activity.info.setText("当前的进度为: " + values[0]);
}
/**
* doInBackground后执行的方法
*
* @param s
*/
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
activity.info.setText(s);
}
}
在Activity中调用方法
public void startMyAsyncTask(View view) {
new MyAsyncTask(this).execute();
}
效果图
座右铭: 少说话, 多做事