onPreExecute doInBackground publishProgress onProgressUpdate onPostExecute
一定得記得調用execute開啟任務
new AsyncTask<Void, Void, Void>() {
@Override
protected void onPreExecute() {
//主線程
Toast.makeText(Class2MainActivity.this, "掃描中", 0).show();
showAnimation();
super.onPreExecute();
}
@Override
protected Void doInBackground(Void... params) {
// TODO Auto-generated method stub
//子線程
//更新進度
int count = 100;
pb.setMax(count);
for(int i=0;i<count;i++){
SystemClock.sleep(50);
publishProgress();
}
return null;
}
@Override
// publishProgress會調用下面的方法 在主線程了
protected void onProgressUpdate(Void... values) {
// TODO Auto-generated method stub
//增加
pb.incrementProgressBy(1);
super.onProgressUpdate(values);
}
//回到了主線程
@Override
protected void onPostExecute(Void result) {
// TODO Auto-generated method stub
//停止動畫
iv.clearAnimation();
Toast.makeText(Class2MainActivity.this, "掃描結束", 0).show();
super.onPostExecute(result);
}
}.execute();