HttpCallback.java 2.02 KB
package com.ectrip.cyt.callback;

import android.content.Context;
import android.os.Handler;
import android.os.Message;

import com.alibaba.fastjson.JSON;
import com.ectrip.trips.net.HttpHelper;
import com.google.gson.Gson;

/**
 * 回调类
 *
 * @param <T>
 */
public abstract class HttpCallback<T> implements ControlHandler {
	private boolean stop;
	private boolean loading = true;

	public abstract void onPreCallback();

	public abstract void onCompletedCallback(T result);

	public abstract void afterCompletedCallback(T result);

	public abstract void onFailureCallback(String FailureStr);

	public abstract void onStopCallback();

	private final static int PARSE_SUCESS = 104;
	private final static int PARSE_FAILURE = 105;

	public void stop() {
		stop = true;
	};

	public boolean isStoped() {
		return stop;
	};

	private void setLoading(boolean loading) {
		this.loading = loading;
	}

	@Override
	public boolean isLoading() {
		return this.loading;
	}

	public abstract void onAgainParseCallback(Object parse);

	/**
	 * 再次解析
	 *
	 * @param <T1>
	 * @return
	 */
	public <T1> void parse2(final String data, final Class<T1> cls,
							Context mContext) {
		// 用于子线程与主线程通信的Handler
		final Handler mHandler = new Handler() {
			@Override
			public void handleMessage(Message msg) {
				super.handleMessage(msg);
				switch (msg.what) {
					case PARSE_SUCESS:
						onAgainParseCallback(msg.obj);
						break;
					case PARSE_FAILURE:
						onFailureCallback(msg.obj.toString());
						break;
					default:
						break;
				}
			}
		};

		HttpHelper.getInstance(mContext).executorService.submit(new Runnable() {
			public void run() {
				try {
//					mHandler.sendMessage(mHandler.obtainMessage(PARSE_SUCESS,
//							JSON.parseObject(data, cls)));
					mHandler.sendMessage(mHandler.obtainMessage(PARSE_SUCESS,
							new Gson().fromJson(data,cls)));
				} catch (Exception e) {
					e.printStackTrace();
					mHandler.sendMessage(mHandler.obtainMessage(PARSE_FAILURE,
							"解析错误!!"));
				}
			}
		});
	}
}