Android AsyncTask(干货)

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]);
		}


	}
	
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值