用AsyncTask进行耗时任务

来源:互联网 发布:matlab数据转为vtk 编辑:程序博客网 时间:2024/06/05 12:40

进行耗时的任务的方法有很多,不过基本上逃不另开线程,毕竟,在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

http://www.apkbus.com/forum.php?mod=viewthread&tid=18487

http://chengbs.iteye.com/blog/1151838

0 0
原创粉丝点击