AsyncTask的使用

我在我的智能语音文档转换中使用了asynctask,目的是将耗时的操作放到后台进行。

 

//当我们新建的类继承了AsyncTask时,会出现最基本的几个方法,然后我们把最耗时的操作(如联网操作,遍历sdcard的操作放到doinbackground中进行)

/**
 * @author wangchaofei
 *
 * 下午5:19:29
 */
public class AsyncTaskDemoActivity extends AsyncTask<Void, Void, Void> {


//第一个参数是Params,传给doinbackground中,第二个参数Progress传给onProgressUpdate,第三个参数Result传给onPostExecute  如果不需要用到哪个参数了可以用Void来表示。

//首先调用onpreExecute方法
@Override
protected void onPreExecute() {
super.onPreExecute();
}
//紧接着调用doincachground方法


@Override
protected Void doInBackground(Void... params) {

publishProgress();

return null;
}

//此方法只有在后台进行调用,用来更新progress的进度  在UI中调用
@Override
protected void onProgressUpdate(Void... values) {
super.onProgressUpdate(values);
}

//在doinbackground方法调用之后被调用  在UI中被调用
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
}


}

 

 

此代码为我的

public class MyAsyncTask extends AsyncTask<Void, Integer, List<String>> {
//采用异步的方式将耗时的操作(此处为遍历sdcard的文件)放到后台中运行,此时不影响activity的oncreate的运行

@Override
protected void onPreExecute() {
super.onPreExecute();
}


//doinbackground执行完之后return的list数组是直接传给了onPostExecute中。
@Override
protected List<String> doInBackground(Void... params) {
Searchfile sf = new Searchfile();  //自定义的搜索sdcard的所有的文件的处理类
listpath = new ArrayList<String>();
String filepath = Environment.getExternalStorageDirectory()
.getAbsolutePath();
List<String> listlist = sf.getAllFileName("/" + filepath+"/SmartVoice/", listpath);
publishProgress(listlist.size());
System.out.println("打印listlist的值"+listlist.toString());
rightname = sf.getFileName(listlist);  // rightname为数据源
System.out.println("打印子线程rightname的值"+rightname.toString());
return rightname;
}


@Override
protected void onPostExecute(List<String> result) {
super.onPostExecute(result);
progress.dismiss();
for (int i = 0; i < rightname.size(); i++) {
int lastname = rightname.get(i).lastIndexOf("/");
String name = rightname.get(i).substring(lastname + 1);
MyFile mfname = new MyFile();
mfname.setFilename(name);
mfname.setFiletype(null);
filename.add(mfname);
}
myadapter = new Myadapter(MainActivity.this, filename);
setListAdapter(myadapter);
}
//如果在doinbackground中加入了publishProgress(listlist.size());则表示此时加入了进度条,进度条的更新使用此方法
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
progress.setProgress(values[0]);
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值