封装 获取后台数据类(一)

2014-11-24 02:03:51 · 作者: · 浏览: 5

import com.taotaospoken.project.json.request.BaseRequest;
import com.taotaospoken.project.json.response.BaseResponse;
import com.taotaospoken.project.util.NetworkUtil;

import android.content.Context;
import android.os.AsyncTask;
import android.util.Log;

/**
 * @作者 尤立才
 * @时间 2013-12-18
 * @作用 供客户端调用,获取后台数据或者提交表单
 * @开始编写代码啦...
 */
public class NetworkDataAccessApi {

	private static Context context;
	private static NetworkDataAccessApi mNetworkDataAccess;
	private static JsonFactory mJsonFactory; //json数据处理工厂
	private LoadDataTask loadtask;

	// 访问网络资源 所必要的 参数
	private int urlId = 0; // URLID
	private String accessUrl = null;// 网络资源地址
	private BaseRequest requestParam = null; // 地址参数

	private NetworkDataAccessListner dataResponseListner = null; // 外部调用接口

	private BaseResponse mBaseResponse;
	/**
	 * 
	 * @描述 获得返回数据实例
	 * @参数 @return
	 * @作者 尤立才
	 * @时间 2013-12-18
	 * @返回类型 DataResponse
	 */
	public static NetworkDataAccessApi getInstance(Context context1) {
		if (mNetworkDataAccess == null) {
			mNetworkDataAccess = new NetworkDataAccessApi();
			mJsonFactory = JsonFactory.getNewFactory(context);
		}
		context = context1;
		return mNetworkDataAccess;
	}

	/**
	 * 
	 * @描述   发送请求
	 * @参数 @param ID 访问Url对应的ID
	 * @参数 @param accessUrl 访问Url
	 * @参数 @param requestParam URL参数
	 * @作者 尤立才
	 * @时间 2013-12-18
	 * @返回类型 void
	 */
	public void sendRequest(int ID, String accessUrl,
			BaseRequest requestParam,BaseResponse baseResponse) {
		mBaseResponse=baseResponse;
		this.urlId = ID;
		this.accessUrl = accessUrl;
		this.requestParam = requestParam;
		
		loadtask = new LoadDataTask();
		loadtask.execute();
	}

	/**
	 * 
	 * @描述 取消本次请求
	 * @参数
	 * @作者 尤立才
	 * @时间 2013-12-18
	 * @返回类型 void
	 */
	public void cancellTask() {
		if (loadtask != null
				&& loadtask.getStatus() == AsyncTask.Status.RUNNING) {
			loadtask.cancel(true);
			loadtask = null;
			if (dataResponseListner != null) {
				dataResponseListner.ReceiveDataCancelled();
			}
		}
	}

	private void receiveDataComplete(Object o) {
		if (this.dataResponseListner != null) {
			dataResponseListner.ReceiveDataComplete(o);
		}
	}

	private void receiveDataOverTime() {
		if (dataResponseListner != null) {
			dataResponseListner.ReceiveDataOverTime();
		}
	}

	private void receiveDataError() {
		if (dataResponseListner != null) {
			dataResponseListner.ReceiveDataError();
		}
	}

	// ============================================================================

	class LoadDataTask extends AsyncTask
  
{ @Override protected void onPreExecute() { // TODO Auto-generated method stub if (loadtask.isCancelled()) { Log.e("=============================", "onPreExecute 取消了"); } else { Log.e("=============================", "onPreExecute"); } super.onPreExecute(); } @Override protected Object doInBackground(Object... objects) { Object object = null; try { object = mJsonFactory.getData(accessUrl, requestParam, urlId,mBaseResponse); } catch (Exception e) { object = null; } return object; } @Override protected void onPostExecute(Object result) { if (loadtask.isCancelled()) { Log.e("=============================", "onPostExecute 取消了"); } else { Log.e("===========================