Android异步任务简单使用

handler发送message实现线程间的通信固然很好,但是代码写起来太麻烦了,因为子线程不能改变UI,需要handler和runnable两个内部类,发来发去的太麻烦,而异步任务就不用管这些,它只有doInBackground是在子线程中的,其他方法全在主线程执行,所以代码写起来要清爽一点

import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		//第一个参数是传入的参数,execute(params)是个数组,可以传网址什么的,
		//中间的参数是onProgressUpdate的类型,相当于表示进度的参数,一般是整数
		//最后一个参数是返回值类型
		 class Task extends AsyncTask<String, Integer, String>{

			@Override
			protected void onPreExecute() {
				// TODO Auto-generated method stub
				super.onPreExecute();
				System.out.println("正在准备执行");
			}

			@Override
			protected void onPostExecute(String result) {
				// TODO Auto-generated method stub
				super.onPostExecute(result);
				System.out.println("result是"+result);
				System.out.println("执行完毕");
			}

			
			@Override
			protected String doInBackground(String... params) {
				// TODO Auto-generated method stub
				System.out.println("params是"+params[0]+params[1]);
				int i=0;
				while(true){
					i++;
					try {
						Thread.sleep(500);//模仿网络加载
					} catch (InterruptedException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
					publishProgress(i);//将进度传出,调用onProgressUpdate方法,传的是个数组
					if(i>100){
						onPostExecute("ok了");
						break;//必须手动停止
					}
				}
				return "线程停止";
				
			}

			@Override
			protected void onProgressUpdate(Integer... values) {
				// TODO Auto-generated method stub
				System.out.println("当前进度是"+values[0]);
				super.onProgressUpdate(values);
			}

			@Override
			protected void onCancelled(String result) {
				// TODO Auto-generated method stub
				super.onCancelled(result);
			}

			@Override
			protected void onCancelled() {
				// TODO Auto-generated method stub
				super.onCancelled();
			}
			 
			
		 }
		 
		 Task task = new Task();
		 task.execute("第一个","第二个");//执行异步任务
	}


你可能感兴趣的:(android)