public class MyAsyncTask extends AsyncTask<Void, Integer, Void> {
//khai báo Activity để lưu trữ địa chỉ của MainActivity
Activity contextCha;
//constructor này được truyền vào là MainActivity
public MyAsyncTask(Activity ctx) {
contextCha = ctx;
}
//hàm này sẽ được thực hiện đầu tiên
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
Toast.makeText(contextCha, "onPreExecute!", Toast.LENGTH_LONG).show();
}
@Override
protected Void doInBackground(Void... arg0) {
for (int i = 0; i <= 100; i++) {
//nghỉ 100 milisecond thì tiến hành update UI
SystemClock.sleep(100);
//khi gọi hàm này thì onProgressUpdate sẽ thực thi
publishProgress(i);
}
return null;
}
/**
* ta cập nhập giao diện trong hàm này
*/
@Override
protected void onProgressUpdate(Integer... values) {
// TODO Auto-generated method stub
super.onProgressUpdate(values);
//thông qua contextCha để lấy được control trong MainActivity
ProgressBar paCha = (ProgressBar) contextCha
.findViewById(R.id.progressBar1);
//vì publishProgress chỉ truyền 1 đối số
//nên mảng values chỉ có 1 phần tử
int giatri = values[0];
//tăng giá trị của Progressbar lên
paCha.setProgress(giatri);
//đồng thời hiện thị giá trị là % lên TextView
TextView txtmsg = (TextView)
contextCha.findViewById(R.id.textView1);
txtmsg.setText(giatri + "%");
}
/**
* sau khi tiến trình thực hiện xong thì hàm này sảy ra
*/
@Override
protected void onPostExecute(Void result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
Toast.makeText(contextCha, "Update xong roi do!", Toast.LENGTH_LONG).show();
}
}