异步任务AsyncTask的使用参考

来源:互联网 发布:网络舆情面试 编辑:程序博客网 时间:2024/04/18 18:25

异步任务AsyncTask使用的参考形式

简化之后,把AsyncTask的使用的参考代码贴出:

String url = "http://www.baid.com/";AsyncTask<String, Integer, Float> async = new AsyncTask<String, Integer, Float>() {// 参数和里面的方法保持一致,分别为:启动任务传入参数类型,更新进度参数类型,返回结果参数类型@Overrideprotected void onCancelled() {// 取消任务后才会调用的方法,不再调用onPostExecute发布结果// TODO Auto-generated method stubLog.d("async", "onCancelled()");super.onCancelled();}@Overrideprotected void onCancelled(Float result) {// 功能同onCancelled()// TODO Auto-generated method stubLog.d("async", "onCancelled(Float result)");super.onCancelled(result);}@Overrideprotected void onPostExecute(Float result) {// 发布结果,在doInBackground方法之后放回结果的方法,由系统调用// TODO Auto-generated method stubLog.d("async", "onPostExecute(Float result)");super.onPostExecute(result);}@Overrideprotected void onPreExecute() {// 调用doInBackground前的预处理操作方法,由系统调用// TODO Auto-generated method stubLog.d("async", "onPreExecute()");super.onPreExecute();}@Overrideprotected void onProgressUpdate(Integer... values) {// 调用publishProgress后系统调用此方法,可操作UI// TODO Auto-generated method stubLog.d("async", "onProgressUpdate(Integer... values)");super.onProgressUpdate(values);}@Overrideprotected Float doInBackground(String... arg0) {// 后台执行的耗时操作,唯一一个不能操作UI的方法,其它的都在UI线程执行// TODO Auto-generated method stubpublishProgress(Integer.valueOf("0"));// 更新进度,使系统自动调用onProgressUpdate方法,参数类型和onProgressUpdate的一致// 耗时操作for (int i = 0; i < 5; i++) {try {Thread.sleep(1000);Log.d("async", "" + isCancelled());} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}Log.d("async", "doInBackground(String... arg0)");return Float.valueOf("0");}};async.execute(url);// 启动异步任务,只可调用一次try {Thread.sleep(2000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}// async.cancel(false);//// 取消任务(效果和cancel(true)一样?),若doInbackground尚未执行则不执行,然后去调用两个onCancelled方法,若已执行则执行完毕再调用onCancelled方法,// 取消后isCancelled()返回true,可在doInBackground中周期性的检测去做判断


0 0
原创粉丝点击