Android异步操作AsyncTask

前面一篇是Thread+Handler更新UI操作, Android有提供一个相对轻量级的AsyncTask,主要用于一些简单的逻辑操作更新UI.

public class ProAT extends AsyncTask<String, Integer, String>{
	/*
	 * 第一个参数为doInBackground传入的参数,
	 * 第二个参数为onProgressUpdate传入参数,由doInBackground内调用publishProgress(Interger)传值;
	 * 第三个为doInBackground返回值和onPostExecute传入的参数。 
	 */
	@Override
	protected void onPreExecute() {
		//该方法将在执行实际的后台操作前被UI thread调用。可以在该方法中做一些准备工作,如在界面上转菊花提示
		System.out.println("onPreExecute--->Task start");
		super.onPreExecute();
	}
	
	@Override
	protected String doInBackground(String... params) {
		//将在onPreExecute 方法执行后马上执行,该方法运行在后台线程中。
		//这里将主要负责执行那些很耗时的后台计算工作。
		System.out.println("doInBackground---->");
		try {
			Thread.sleep(5000);
			//可以调用 publishProgress方法来更新实时的任务进度。该方法是抽象方法,子类必须实现。 
			publishProgress(1);
		} catch (InterruptedException e) {
			// TODO: handle exception
			e.printStackTrace();
		}
		return "doInBackground";
	}
	
	@Override
	protected void onProgressUpdate(Integer... values) {
		System.out.println("更新进度"+values[0]);
		//在publishProgress方法被调用后,UI thread将调用这个方法从而在界面上展示任务的进展情况,例如通过一个进度条进行展示。
		super.onProgressUpdate(values);
	}
	
	@Override
	protected void onPostExecute(String result) {
		// 在doInBackground 执行完成后,onPostExecute 方法将被UI thread调用,后台的计算结果将通过该方法传递到UI thread
		//用于更新UI
		System.out.println("onPostExecute----->"+result);
		super.onPostExecute(result);
	}
	
	@Override
	protected void onCancelled() {
		//当用户取消操作时.
		super.onCancelled();
	}
}

主线程调用

public class AsyncTaskActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        ProAT pro = new ProAT();
        //execute必须在主线程调用
        pro.execute("url");
    }
}


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值