您的位置:首页 > 移动开发 > Android开发

Android消息机制六---AsyncTask例子

2016-03-03 13:55 405 查看
Android消息机制之六---AsyncTask例子

本博客是对之前的android异步的一个例子;

public class MainActivity extends AppCompatActivity {

private Button download = null;
private TextView text = null;
private ProgressBar progressBar = null;

private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
switch (msg.what){
case 0:
progressBar.setProgress(msg.arg1);
text.setText(msg.arg1 + "%");
break;
}
}
};

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

this.download = (Button)this.findViewById(R.id.btn);
this.text = (TextView)this.findViewById(R.id.text);
this.progressBar = (ProgressBar)this.findViewById(R.id.progress);

this.progressBar.setMax(100);

this.download.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//利用AsyncTask来进行更新
DownLoadAsync downLoadAsync = new DownLoadAsync(progressBar, text);
downLoadAsync.execute();
//利用Handler + Message来更新;
//                UpdateThread updateThread = new UpdateThread(handler);
//                updateThread.start();
}
});

//测试Looper线程
new LooperThread().start();
}

private class DownLoadAsync extends AsyncTask<Void,Integer, Boolean>{

private ProgressBar progressBar = null;
private TextView   textView = null;

public DownLoadAsync(ProgressBar p, TextView t){
this.progressBar = p;
this.textView = t;
}

@Override
protected void onPreExecute() {
this.textView.setText("0%");
this.progressBar.setProgress(0);
super.onPreExecute();
}

@Override
protected void onPostExecute(Boolean aBoolean) {
super.onPostExecute(aBoolean);
}

@Override
protected void onProgressUpdate(Integer... values) {
this.progressBar.setProgress(values[0]);
this.textView.setText(values[0] + "%");
super.onProgressUpdate(values);
}

@Override
protected Boolean doInBackground(Void... params) {
for(int i = 1;i <= 100; i++){
this.publishProgress(i);
try{
Thread.sleep(100);
}catch (Exception e){
e.printStackTrace();
}
}
return Boolean.TRUE;
}
}
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: