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