asyncTask用法

package com.example.testasynctask;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;

public class MainActivity extends Activity {

	private static final int MBACKGROUNDRUNNABLEGETPATIENTINFODATA = 9;// 加载病人基本信息标示ID
	private static final int MBACKGROUNDRUNNABLEGETLISDATA = 10;// 加载检验数据标示ID
	private static final int MBACKGROUNDRUNNABLEGETEMRDATA = 11;// 加载电子病历数据标示ID
	private static final int MBACKGROUNDRUNNABLEGETDOCTORADVICEDATA = 12;// 加载医嘱数据标示ID
	private static final int MBACKGROUNDRUNNABLEGETTHREETESTDATA = 13;// 加载三测单数据标示ID
	private static final int MBACKGROUNDRUNNABLEGETPACSDATA = 14;// 加载医学影像报告数据标示ID
	public static final String TAG = "MainActivity";

	private static ExecutorService exec = Executors.newFixedThreadPool(5);

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		init();
	}

	@SuppressLint("NewApi")
	private void init() {

		MyHttpTask asynctask = new MyHttpTask();
//		asynctask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,
//				MBACKGROUNDRUNNABLEGETPATIENTINFODATA,
//				MBACKGROUNDRUNNABLEGETLISDATA, MBACKGROUNDRUNNABLEGETEMRDATA,
//				MBACKGROUNDRUNNABLEGETDOCTORADVICEDATA,
		
//				MBACKGROUNDRUNNABLEGETTHREETESTDATA,
//				MBACKGROUNDRUNNABLEGETPACSDATA);// 加载病人基本信息
		new MyHttpTask().executeOnExecutor(exec, MBACKGROUNDRUNNABLEGETLISDATA);//加载检验数据
		 
		new MyHttpTask().executeOnExecutor(exec, MBACKGROUNDRUNNABLEGETEMRDATA);// 加载电子病历数据
		new MyHttpTask().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, MBACKGROUNDRUNNABLEGETDOCTORADVICEDATA);// 加载医嘱数据
		new MyHttpTask().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, MBACKGROUNDRUNNABLEGETTHREETESTDATA);// 加载三测单数据
		new MyHttpTask().executeOnExecutor(exec, MBACKGROUNDRUNNABLEGETPACSDATA);// 加载医学影像报告数据

	}

	/**
	 * 访问网络的工具
	 * 
	 * @author houhy
	 * 
	 * @param <Params>
	 */
	private final class MyHttpTask extends
			AsyncTask<Integer, Void, List<Integer>> {
		/**
		 * 类似与Thread.start方法 由于final修饰,无法Override,方法重命名 省略掉网络判断
		 * 
		 * @param params
		 * @return
		 */

		/*
		 * public final AsyncTask<Params, Void, CacheData> executeProxy(
		 * Params... params) { if
		 * (CommandTools.isNetConnected(getApplicationContext())) { return
		 * super.executeOnExecutor(exec, params); } else {
		 * Toast.makeText(getApplicationContext(), "网络连接异常,无法连接服务器。",
		 * Toast.LENGTH_SHORT).show(); } return null;
		 * 
		 * 
		 * }
		 */
		Long start=null;
		Long end=null;
		@Override
		protected List<Integer> doInBackground(Integer... params) {
			start=System.currentTimeMillis();
			Integer netCode = null;
			List<Integer> codeList = new ArrayList<Integer>();
			for (int i = 0; i < params.length; i++) {
				netCode = params[i];
				codeList.add(switchCode(netCode));
			}
			return codeList;

		}
		
		

		@Override
		protected void onPostExecute(List<Integer> result) {
			Integer netCode = null;
			for (int i = 0; i < result.size(); i++) {
				netCode = result.get(i);
				switchUI(netCode);
			}
			end=System.currentTimeMillis();
			Log.i(TAG, "可以更新UI了,所用时间为"+(end-start));

		}

	}

	public Integer switchCode(Integer netCode) {
		switch (netCode) {
		case MBACKGROUNDRUNNABLEGETPATIENTINFODATA:
			try {
				Thread.sleep(3000);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			Log.i(TAG, "任务" + netCode + " Thread id: "
					+ Thread.currentThread().getId());
			break;
		case MBACKGROUNDRUNNABLEGETLISDATA:
			try {
				Thread.sleep(3000);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			Log.i(TAG, "任务" + netCode + " Thread id: "
					+ Thread.currentThread().getId());
			break;
		case MBACKGROUNDRUNNABLEGETEMRDATA:
			try {
				Thread.sleep(3000);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			Log.i(TAG, "任务" + netCode + " Thread id: "
					+ Thread.currentThread().getId());
			break;
		case MBACKGROUNDRUNNABLEGETDOCTORADVICEDATA:
			try {
				Thread.sleep(3000);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			Log.i(TAG, "任务" + netCode + " Thread id: "
					+ Thread.currentThread().getId());
			break;
		case MBACKGROUNDRUNNABLEGETTHREETESTDATA:
			try {
				Thread.sleep(3000);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			Log.i(TAG, "任务" + netCode + " Thread id: "
					+ Thread.currentThread().getId());
			break;
		case MBACKGROUNDRUNNABLEGETPACSDATA:
			try {
				Thread.sleep(3000);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			Log.i(TAG, "任务" + netCode + " Thread id: "
					+ Thread.currentThread().getId());
			break;

		default:
			Log.i(TAG, "参数错误!!!");
			break;
		}
		return netCode;

	}

	public void switchUI(Integer result) {
		switch (result) {
		case MBACKGROUNDRUNNABLEGETPATIENTINFODATA:
			Log.i(TAG, result + "可以更新UI了" + " Thread id: "
					+ Thread.currentThread().getId());
			break;
		case MBACKGROUNDRUNNABLEGETLISDATA:
			Log.i(TAG, result + "可以更新UI了" + " Thread id: "
					+ Thread.currentThread().getId());
			break;
		case MBACKGROUNDRUNNABLEGETEMRDATA:
			Log.i(TAG, result + "可以更新UI了" + " Thread id: "
					+ Thread.currentThread().getId());
			break;
		case MBACKGROUNDRUNNABLEGETDOCTORADVICEDATA:
			Log.i(TAG, result + "可以更新UI了" + " Thread id: "
					+ Thread.currentThread().getId());
			break;
		case MBACKGROUNDRUNNABLEGETTHREETESTDATA:
			Log.i(TAG, result + "可以更新UI了" + " Thread id: "
					+ Thread.currentThread().getId());
			break;
		case MBACKGROUNDRUNNABLEGETPACSDATA:
			Log.i(TAG, result + "可以更新UI了" + " Thread id: "
					+ Thread.currentThread().getId());

			break;

		default:

			break;
		}
	}

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值