封装 获取后台数据类



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<Object, Integer, Object> {

		@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("=============================", "onPostExecute");
			}
			try {
				if (NetWork.REQUEST_SUCCESS == mJsonFactory.getResponseCode()) {
					if (result == null) {
						receiveDataError();
					} else
						receiveDataComplete(result);
				} else if (NetworkUtil.NO_NET_CONNECT == mJsonFactory
						.getResponseCode()) {
					receiveDataOverTime();
				} else {
					receiveDataOverTime();
				}
			} catch (Exception e) {
				receiveDataError();
			}
		}

		@Override
		protected void onCancelled() {
			// TODO Auto-generated method stub
			super.onCancelled();
		}

	}

	public void setDataResponseListner(
			NetworkDataAccessListner dataResponseListner) {
		this.dataResponseListner = dataResponseListner;
	}

	// ====================以下是外部调用接口==================================

	public interface NetworkDataAccessListner {

		/*
		 * 加载数据完成
		 */
		void ReceiveDataComplete(Object object);// 加载数据完成

		void ReceiveDataError();// 加载数据出问题

		void ReceiveDataOverTime();// 加载数据超时

		void ReceiveDataCancelled();// 加载数据取消
	
	}
}
写的一般,望大神指点。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值