package com.cheng.multithreadstudy.sunframework.base; import android.database.SQLException; import android.os.Bundle; import android.os.Message; import com.cheng.multithreadstudy.sunframework.proxy.MessageArg; import com.cheng.multithreadstudy.sunframework.proxy.MessageProxy; import com.cheng.multithreadstudy.sunframework.proxy.ModelMap; import com.cheng.utils.Logger; import java.io.InterruptedIOException; import java.net.UnknownHostException; public class BaseControl { protected ModelMap mModel; protected MessageProxy mMessageCallBack; //消息分发代理类型 public BaseControl(MessageProxy mMessageCallBack) { this.mMessageCallBack = mMessageCallBack; } public void setModel(ModelMap model) { this.mModel = model; } public void onStart() { } public void onResume() { } public void onPause() { } /** * 界面不可见的时候,清除界面相关的消息发送传递 */ public void onStop() { mMessageCallBack.clearAllMessage(); } public void onDestroyView() { mMessageCallBack.clearAllMessage(); } /** * 清除数据,比如model中的数据变量什么的。 */ public void onDestroy() { if (mMessageCallBack != null) { mMessageCallBack.clearAllMessage(); } } protected void dealWithException(Exception e) { if (e instanceof InterruptedIOException) { sendToastMessage("下载内容超时"); } else if (e instanceof UnknownHostException) { // || e instanceof HttpHostConnectException sendToastMessage("无法连接到服务器"); } else if (e instanceof SQLException) { Logger.e("error: ", e); } else { Logger.e("error: ", e); } } protected void dealWithExceptionMessage(String s) { Logger.e("error: ", s + ""); } /** * 直接发送toast消息 * * @param toast */ protected void sendToastMessage(String toast) { Message msg = mMessageCallBack.obtionMessage(MessageArg.WHAT.UI_MESSAGE); msg.arg1 = MessageArg.ARG1.TOAST_MESSAGE; msg.obj = toast; mMessageCallBack.sendMessage(msg); } protected void sendToastMessage(int toast) { Message msg = mMessageCallBack.obtionMessage(MessageArg.WHAT.UI_MESSAGE); msg.arg1 = MessageArg.ARG1.TOAST_MESSAGE; msg.obj = toast; mMessageCallBack.sendMessage(msg); } /** * 直接向指定方法发送消息 * * @param method 指定的方法名称(方法可以有参数Bundle 也可以没有回调参数Bundle) */ protected void sendMessage(String method) { Message msg = mMessageCallBack.obtionMessage(MessageArg.WHAT.UI_MESSAGE); msg.arg1 = MessageArg.ARG1.CALL_BACK_METHOD; msg.obj = method; mMessageCallBack.sendMessage(msg); } /** * 直接向指定方法发送消息 * * @param method 指定的方法名称(方法可以有参数Bundle 也可以没有回调参数Bundle) * @param delayMillis */ protected void sendMessage(String method, long delayMillis) { Message msg = mMessageCallBack.obtionMessage(MessageArg.WHAT.UI_MESSAGE); msg.arg1 = MessageArg.ARG1.CALL_BACK_METHOD; msg.obj = method; mMessageCallBack.sendMessageDelay(msg, delayMillis); } /** * 直接向指定方法发送消息, 同时将Bundle数据传递过去 * * @param method * @param bundle */ protected void sendMessage(String method, Bundle bundle) { Message msg = mMessageCallBack.obtionMessage(MessageArg.WHAT.UI_MESSAGE); msg.arg1 = MessageArg.ARG1.CALL_BACK_METHOD; msg.obj = method; msg.setData(bundle); mMessageCallBack.sendMessage(msg); } /** * 直接向指定方法发送消息,同时将Bundle数据传递过去 * * @param method * @param bundle * @param delayMillis */ protected void sendMessage(String method, Bundle bundle, long delayMillis) { Message msg = mMessageCallBack.obtionMessage(MessageArg.WHAT.UI_MESSAGE); msg.arg1 = MessageArg.ARG1.CALL_BACK_METHOD; msg.obj = method; msg.setData(bundle); mMessageCallBack.sendMessageDelay(msg, delayMillis); } /** * 回调参数的方法 * * @param bundle * @return */ protected Message getDataMessage(Bundle bundle) { Message msg = mMessageCallBack.obtionMessage(MessageArg.WHAT.UI_MESSAGE); msg.arg1 = MessageArg.ARG1.CALL_BACK_METHOD; msg.setData(bundle); return msg; } /** * 回调参数的方法 * * @param method * @param bundle * @return */ protected Message getDataMessage(String method, Bundle bundle) { Message msg = mMessageCallBack.obtionMessage(MessageArg.WHAT.UI_MESSAGE); msg.arg1 = MessageArg.ARG1.CALL_BACK_METHOD; msg.obj = method; msg.setData(bundle); return msg; } /** * 回调参数的方法 * * @return */ protected Message getMessage() { Message msg = mMessageCallBack.obtionMessage(MessageArg.WHAT.UI_MESSAGE); msg.arg1 = MessageArg.ARG1.CALL_BACK_METHOD; return msg; } /** * 返回method消息 * * @param method 方法名字 * @return Message 返回类型 */ protected Message getMethodMessage(String method) { Message msg = mMessageCallBack.obtionMessage(MessageArg.WHAT.UI_MESSAGE); msg.arg1 = MessageArg.ARG1.CALL_BACK_METHOD; msg.obj = method; return msg; } /** * 返回toast消息 * * @param toastMsg * @return */ protected Message getToastMessage(String toastMsg) { Message msg = mMessageCallBack.obtionMessage(MessageArg.WHAT.UI_MESSAGE); msg.arg1 = MessageArg.ARG1.TOAST_MESSAGE; msg.obj = toastMsg; return msg; } }