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

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


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

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

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


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

Android[中级教程]第十一章 Android异步之AsyncTask_第1张图片

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

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

	}

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


你可能感兴趣的:(android,ListView,String,list,layout,Class)