Android[中级教程]第十一章 Android异步之AsyncTask

Android里有一个自带的异步类,里面封装了异步的操作方法,主要有三个操作方法


1.doInBackground   这是后台运行的程序,就是新建了一个线程在后台所要运行的内容,例如(网络获取图片)

2.onProgressUpdate 是前台界面的更新,后台的操作要反映到前台,就需要在这里面做处理,例如(刷新前台的图片)

3.onPostExecute  这个就是线程结束后做的处理


在这里面将异步分成三个步骤,好了,不多说了,让我们看一下今天运行的程序,程序将每隔一秒钟加入一项内容,见图


好,接下来,我们来分析一下代码的实现:

public class AsynDemo extends Activity {

	private String[] items = { "第一项", "第二项", "第三项", "第四项", "第五项", "第六项", "第七项",
			"第八项", "第九项", "第十项" };
	
	private ListView listView;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);

		setContentView(R.layout.asyn_layout);

		listView = (ListView) findViewById(R.id.list);

		//设定listView的适配器
		listView.setAdapter(new ArrayAdapter<String>(this,
				android.R.layout.simple_list_item_1, new ArrayList()));

		//运行异步程序
		new AddStringTask().execute();
	}

	/**
	 * 异步类,继承了AsyncTask
	 *
	 */
	class AddStringTask extends AsyncTask<Void, String, Void> {

		//后台运行的程序
		@Override
		protected Void doInBackground(Void... arg0) {

			//遍历items数组,将每个String发给前台
			for (String s : items) {

				publishProgress(s);
				SystemClock.sleep(1000);

			}

			return null;
		}

		//前台操作,将数据加入到到Adapter
		@Override
		protected void onProgressUpdate(String... values) {

			((ArrayAdapter) listView.getAdapter()).add(values[0]);
		}

		//结束
		@Override
		protected void onPostExecute(Void result) {
			Toast.makeText(AsynDemo.this, "结束", 1).show();
		}

	}

}
其实就这么点代码,具体步骤就是这样,相信大家都能看懂。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值