Android 异步任务

来源:互联网 发布:6120ci软件 编辑:程序博客网 时间:2024/04/27 17:49

Android 异步任务,避免重复的工作,同时代码逻辑比较清晰,下面是一个例子。


//一个按钮的点击事件

public void asynctask(View view){

new AsyncTask() {
ProgressDialog pb;
@Override
public void onProgressUpdate(int i) {
pb.setProgress(i);
}

@Override
public void onPreExecute() {
pb = new ProgressDialog(MainActivity.this);
pb.setMessage("正在加载...");
pb.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
pb.show();
}

@Override
public void onPostExecute() {
pb.cancel();
}

@Override
public void doInBackground() {
pb.setMax(200);
for(int i= 0;i<100;i++){
publishProgress(i);
System.out.println("iiiiiiii:" +i);
try {
Thread.sleep(30);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}.execute();

}




public abstract class AsyncTask {
private Handler handler = new  Handler(){
public void handleMessage(android.os.Message msg) {
switch (msg.what) {
case 0:
onPostExecute();
break;
case 1:
onProgressUpdate((Integer)msg.obj);
break;


default:
break;
}
};
};

public abstract void onPreExecute();

public abstract void onPostExecute();

public abstract void doInBackground();

public abstract void onProgressUpdate(int i);

public void publishProgress(int i){
Message msg = Message.obtain();
msg.obj = i;
msg.what = 1;
handler.sendMessage(msg);
}

public void execute(){
onPreExecute();
new Thread(){
@Override
public void run() {
super.run();
doInBackground();

Message msg = Message.obtain();
msg.what = 0;
handler.sendMessage(msg);
}
}.start();

}
}

0 0
原创粉丝点击