欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android学习之异步处理

程序员文章站 2022-04-25 15:53:31
...

main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
	xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical" 
	android:layout_width="fill_parent"
	android:layout_height="fill_parent">
	<ProgressBar
		android:id="@+id/bar" 
		android:layout_width="fill_parent"
		android:layout_height="wrap_content"
		style="?android:attr/progressBarStyleHorizontal" />
	<TextView
		android:id="@+id/info"
		android:layout_width="fill_parent"
		android:layout_height="wrap_content" />
</LinearLayout>

 

 

 

MyAsyncTaskDemo.java:

import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.widget.ProgressBar;
import android.widget.TextView;

public class MyAsyncTaskDemo extends Activity {
	private ProgressBar bar = null;								// 进度条组件
	private TextView info = null;								// 文本显示组件

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		super.setContentView(R.layout.main);					// 调用布局管理器
		this.bar = (ProgressBar) super.findViewById(R.id.bar);	// 取得组件
		this.info = (TextView) super.findViewById(R.id.info);	// 取得组件
		ChildUpdate child = new ChildUpdate() ;					// 子任务对象
		child.execute(100) ; 									// 为休眠时间
	}
	private class ChildUpdate extends AsyncTask<Integer, Integer, String> {
		@Override
		protected void onPostExecute(String result) {			// 任务执行完后执行
			MyAsyncTaskDemo.this.info.setText(result) ;			// 设置文本
		}
		@Override
		protected void onProgressUpdate(Integer... progress) {	// 每次更新之后的数值
			MyAsyncTaskDemo.this.info.setText("当前进度是:"
					+ String.valueOf(progress[0]));				// 更新文本信息
		}
		@Override
		protected String doInBackground(Integer... params) {	// 处理后台任务
			for (int x = 0; x < 100; x++) {						// 进度条累加
				MyAsyncTaskDemo.this.bar.setProgress(x);		// 设置进度
				this.publishProgress(x);						// 传递每次更新的内容
				try {
					Thread.sleep(params[0]);					// 延缓执行
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
			return "执行完毕。";									// 返回执行结果
		}
	}

}

 

相关标签: AsyncTask