AsyncTask demo

  为了解决这个问题,Android 1.5提供了一个工具类:AsyncTask,它使创建需要与用户界面交互的长时间运行的任务变得更简单。相对来说AsyncTask更轻量级一些,适用于简单的异步处理,不需要借助线程和Handler即可实现。 
AsyncTask是抽象类.AsyncTask定义了三种泛型类型 Params,Progress和Result。 
  Params 启动任务执行的输入参数,比如HTTP请求的URL。 
  Progress 后台任务执行的百分比。 

  Result 后台执行任务最终返回的结果,比如String。 


package com.example.aynctaskpro;

import android.annotation.SuppressLint;
import android.os.AsyncTask;
import android.util.Log;

public class MyTask extends AsyncTask<String, Integer, String> {

	@Override
	protected String doInBackground(String... params) {
		// TODO Auto-generated method stub
		Log.d("mytask", "doInBackground params = "+params[0]+" len="+params.length);
		try {
			Thread.sleep(1000);
			publishProgress(new Integer[]{1});
			Thread.sleep(1000);
			publishProgress(new Integer[]{2});
			Thread.sleep(1000);
			publishProgress(new Integer[]{3});
			Thread.sleep(1000);
			publishProgress(new Integer[]{4});
			Thread.sleep(1000);
			publishProgress(new Integer[]{5});
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return "fuck";
	}

	@Override
	protected void onCancelled() {
		// TODO Auto-generated method stub
		Log.d("mytask", "onCancelled");
		super.onCancelled();
	}

	@SuppressLint("NewApi")
	@Override
	protected void onCancelled(String result) {
		// TODO Auto-generated method stub
		Log.d("mytask", "onCancelled result="+result);
		super.onCancelled(result);
	}

	@Override
	protected void onPostExecute(String result) {
		// TODO Auto-generated method stub
		Log.d("mytask", "onPostExecute result="+result);
		super.onPostExecute(result);
	}

	@Override
	protected void onPreExecute() {
		// TODO Auto-generated method stub
		Log.d("mytask", "onPreExecute");
		super.onPreExecute();
	}

	@Override
	protected void onProgressUpdate(Integer... values) {
		// TODO Auto-generated method stub
		Log.d("mytask", "onProgressUpdate value="+values[0]+" len="+values.length);
		super.onProgressUpdate(values);
	}



}



package com.example.aynctaskpro;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		final MyTask task = new MyTask();
		task.execute("address");
//		Handler h = new Handler();
//		h.postDelayed(new Runnable(){
//
//			@Override
//			public void run() {
//				// TODO Auto-generated method stub
//				Log.d("mytask", "cancel="+task.cancel(false));
//			}
//			
//		}, 3000);
	}


}


03-05 11:24:38.508: D/mytask(22628): onPreExecute
03-05 11:24:38.508: D/mytask(22628): doInBackground params = address len=1
03-05 11:24:39.508: D/mytask(22628): onProgressUpdate value=1 len=1
03-05 11:24:40.508: D/mytask(22628): onProgressUpdate value=2 len=1
03-05 11:24:41.518: D/mytask(22628): onProgressUpdate value=3 len=1
03-05 11:24:42.518: D/mytask(22628): onProgressUpdate value=4 len=1
03-05 11:24:43.518: D/mytask(22628): onProgressUpdate value=5 len=1
03-05 11:24:43.518: D/mytask(22628): onPostExecute result=fuck
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值