进行耗时的任务的方法有很多,不过基本上逃不另开线程,毕竟,在UI线程里进行耗时操作会提示无响应。
今天学习了以下用AsyncTask来进行耗时操作。
用asyncTask不需要自己费力新建线程或handler,只需要继承AsyncTask,重写doInBackground方法和onPostExecute就能完成大部分耗时操作。
然后在UI线程里调用execute方法执行。
但是官方建议不能用AsyncTask来完成耗时太久的任务,最多只能是几秒,如果需要更长的时间,则可以使用java.util.concurrent中的类。
如下是demo
private class DownloadFilesTask extends AsyncTask {
@Override
protected Void doInBackground(Void… params) {
//耗时操作,
try {
Thread.sleep(4*1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result) {
//作UI线程的修改。
progressDialog.dismiss();
super.onPostExecute(result);
}
}
<pre name="code" class="java">DownloadFilesTask task = new DownloadFilesTask();
task.execute();
参考网站:
http://developer.android.com/reference/android/os/AsyncTask.html#top
http://www.cnblogs.com/devinzhang/archive/2012/02/13/2350070.html