首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

运用AsyncTask跟新进度条

2012-11-12 
使用AsyncTask跟新进度条在Android中是不允许在子线程中跟新UI的,解决这个问题的主要方法有两种:1、Handler

使用AsyncTask跟新进度条

在Android中是不允许在子线程中跟新UI的,解决这个问题的主要方法有两种:

1、Handler

2、AsyncTask

 

现在就来讲解AsyncTask跟新进度条的例子

AsyncTask的构造函数中有三个参数

第一个参数:表示传递到doInBackground中的参数

第二个参数:表示传递到onProgressUpdate中的参数

第三个参数:表示doInBackground的返回值

 

 

对AsyncTask中几个比较常用的函数进行解释:

doInBackground :表示在后台运行的代码,主要用于执行比较耗时的任务,比如从网络下载数据

onPreExecute:表示在execute方法之前执行

onPostExecute:表示在execute方法后面执行

onProgressUpdate:主要用来跟新UI的

publishProgress:一般在doInBackground调用,从而调用onProgressUpdate

 

下面将我跟新ProgressBar的代码贴上:

public class MyTask extends AsyncTask<ProgressBar, Integer,Integer>{//用于保存UI上面的进度条private ProgressBar bar;@Overrideprotected Integer doInBackground(ProgressBar... params){// TODO Auto-generated method stubSystem.out.println("doinbackground=====>"+Thread.currentThread().getName());bar=params[0];int i=0;for(;i<=bar.getMax();i++){bar.setProgress(i);try{//通过调用此方法,从而调用onProgressUpdatethis.publishProgress(i);Thread.sleep(1000);} catch (InterruptedException e){// TODO Auto-generated catch blocke.printStackTrace();}}return i;}@Overrideprotected void onCancelled(){// TODO Auto-generated method stubsuper.onCancelled();}@Overrideprotected void onPostExecute(Integer result){// TODO Auto-generated method stubsuper.onPostExecute(result);System.out.println("postExecute=====>"+Thread.currentThread().getName());}@Overrideprotected void onPreExecute(){// TODO Auto-generated method stubsuper.onPreExecute();System.out.println("preExecute=====>"+Thread.currentThread().getName());}@Overrideprotected void onProgressUpdate(Integer... values){// TODO Auto-generated method stubSystem.out.println("onprogressUpdate=====>"+Thread.currentThread().getName());super.onProgressUpdate(values);bar.setProgress(values[0]);}}


 

热点排行