Android异步任务

Android提供的异步任务方法(如果只是调用一次,那就不推荐用这个方法,因为这个异步任务内部有线程池,最少开启5个,保持活动的有10个,最大支持128个)

/**
 * 第一个参数:执行异步任务传递的参数  在execute()方法里传入参数
 * 第二个参数:执行异步任务的进度
 * 第三个参数:异步任务的返回值
 */
new AsyncTask<Context, Integer, List<ContactInfo>>(){
	@Override
	protected List<ContactInfo> doInBackground(Context... params) {
		try {
			publishProgress(1);//这个参数传递给了onProgressUpdate方法
			Thread.sleep(1000);
			publishProgress(30);
			Thread.sleep(1000);
			publishProgress(70);
			Thread.sleep(1000);
			publishProgress(100);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		infos = ContactInfoProvider.getContactInfos(params[0]);
		return infos;//这个方法的返回值传到了onPostExecute方法参数中
	}
	@Override
	protected void onProgressUpdate(Integer... values) {
		int number = values[0];
		Toast.makeText(getApplicationContext(), "当前进度:"+number, Toast.LENGTH_SHORT).show();;
		super.onProgressUpdate(values);
	}
	@Override
	protected void onPreExecute() {
		ll_select_contact.setVisibility(View.VISIBLE);
		super.onPreExecute();
	}
	@Override
	protected void onPostExecute(List<ContactInfo> result) {
		System.out.println(result.size());
		ll_select_contact.setVisibility(View.INVISIBLE);
		lv_select_contact.setAdapter(new ContactAdapter());
		super.onPostExecute(result);
	}
}.execute(this);//传递参数给异步任务


自定义异步方法

import android.os.Handler;
import android.os.Message;

public abstract class MyAsynTask {
	public abstract void onPreExecute();//执行耗时任务之前要执行的操作(例如View的显示)

	public abstract void doInBackground();//需要开启新线程的操作,在这个方法里执行

	public abstract void onPostExecute();//执行完耗时操作后要执行的方法(例如View的隐藏)

	private Handler handler = new Handler() {
		@Override
		public void handleMessage(Message msg) {
			super.handleMessage(msg);
			onPostExecute();
		}

	};

	public void execute() {
		onPreExecute();
		new Thread() {
			public void run() {
				doInBackground();
				handler.sendEmptyMessage(0);
			};
		}.start();
	}
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值