public class MainActivity extends ActionBarActivity {
TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView) findViewById(R.id.txt);
findViewById(R.id.blockbtn).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
MyAsyncTask myAsyncTask = new MyAsyncTask();
myAsyncTask.execute(1000);
}
});
findViewById(R.id.showbtn).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
textView.setText("show me the money");
}
});
}
/*三个参数分别为
doInBackground参数类型,
onProgressUpdate参数类型,
doInBackground返回值类型 和 onPostExecute参数类型*/
private class MyAsyncTask extends AsyncTask<Integer, Integer, Integer>{
//步骤2.新线程,此参数为myAsyncTask.execute(1000);中传入的数组参数
@Override
protected Integer doInBackground(Integer... arg0) {
int i =0;
try {
for(i = 0; i <= 10; i++){
Thread.sleep(1 * arg0[0]);
publishProgress(i);
}
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return i;
}
//步骤1.在UI线程
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
textView.setText("准备开始 ");
}
//步骤4.doInBackground返回值为onPostExecute参数传入,此方法在UI线程中
@Override
protected void onPostExecute(Integer result) {
textView.setText("结果: " + (result-1));
}
//步骤3.在doInBackground中每次调用publishProgress(i)方法时就会触发onProgressUpdate,此方法在UI线程执行;
//此方法参数为i
@Override
protected void onProgressUpdate(Integer... values) {
textView.setText("" + values[0]);
}
}
}