Android 中AsyncTask 的使用

闲来无事,写了一个关于AsyncTask的小案例,主要实现进度条的显示,并且在10后走完关闭。

 MainActivity 代码如下:

import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Toast;
import com.example.test1.R;

public class MainActivity extends Activity {
	private static final String TAG="TEST";
	private MyAsyncTask myTask=null;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
			super.onCreate(savedInstanceState);
			setContentView(R.layout.main_layout);
	}
	
	/**
	 * 按钮单机事件
	 * @param v
	 */
	public void onClick(View v){
		if(v.getId()==R.id.start_task){
			myTask=new MyAsyncTask(this);  //实例化AsyncTask
			myTask.execute();
		}
	}
	
	/**
	 * AsyncTask的实现
	 * @author dell
	 *
	 */
	private class MyAsyncTask extends AsyncTask<Void,Integer,String>{
		private ProgressDialog pd=null;
		public MyAsyncTask(Context context){
			pd=new ProgressDialog(context,0);
			pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
			pd.setMax(100);
			pd.setCancelable(false);
			pd.show();
		}

		//这里放置比较耗时的加载工作
		@Override
		protected String doInBackground(Void... arg0) {

			
			for (int j = 1; j <= 10; j++) {
				publishProgress(10*j);  //通知onProgressUpdate() 方法执行
				try {
					Thread.sleep(1000);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
			return null;
		}

		@Override
		protected void onCancelled() {
			super.onCancelled();
		}

		
		//执行完毕后,显示结果,刷新UI
		@Override
		protected void onPostExecute(String result) {
			pd.dismiss();
			Toast.makeText(MainActivity.this, "执行完毕", Toast.LENGTH_SHORT).show();
			super.onPostExecute(result);
		}

		//开始执行
		@Override
		protected void onPreExecute() {
			Log.v(TAG, "onPreExecute is execute");
			super.onPreExecute();
		}

		//更新进度条
		@Override
		protected void onProgressUpdate(Integer... values) {
			pd.setProgress(values[0]);
			super.onProgressUpdate(values);
		}
		
	}
}

界面布局代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" 
    android:gravity="center">
    
    <Button 
        android:id="@+id/start_task"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/start_task"
        android:onClick="onClick"/>

</RelativeLayout>


比较简单,主要是让初学者知道 AsyncTask的用法,和它的每个方法什么时候执行。


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值