/* * ##################################################### * # # * # _oo0oo_ # * # o8888888o # * # 88" . "88 # * # (| -_- |) # * # 0\ = /0 # * # ___/`---'\___ # * # .' \\| |# '. # * # / \\||| : |||# \ # * # / _||||| -:- |||||- \ # * # | | \\\ - #/ | | # * # | \_| ''\---/'' |_/ | # * # \ .-\__ '-' ___/-. / # * # ___'. .' /--.--\ `. .'___ # * # ."" '< `.___\_<|>_/___.' >' "". # * # | | : `- \`.;`\ _ /`;.`/ - ` : | | # * # \ \ `_. \_ __\ /__ _/ .-` / / # * # =====`-.____`.___ \_____/___.-`___.-'===== # * # `=---=' # * # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * # # * # 佛祖保佑生哥 永无BUG # * # # * ##################################################### * */ package com.framework.base; import android.database.SQLException; import android.os.Bundle; import android.os.Message; import com.framework.DroidFramework; import com.framework.proxy.MessageArg; import com.framework.proxy.MessageProxy; import com.framework.proxy.ModelMap; import com.orhanobut.logger.Logger; import java.io.InterruptedIOException; import java.net.UnknownHostException; import java.util.NoSuchElementException; 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 (DroidFramework.LOG) { if (e instanceof InterruptedIOException) { sendToastMessage("下载内容超时"); } else if (e instanceof UnknownHostException) { sendToastMessage("连接服务器超时,请检查网络"); } else if (e instanceof SQLException) { sendToastMessage("数据库操作异常"); } else if (e instanceof com.alibaba.fastjson.JSONException || e instanceof org.json.JSONException) { sendToastMessage("数据解析数据异常"); } else if (e instanceof NoSuchElementException) { sendToastMessage("网络异常,请重新尝试"); } else { sendToastMessage("其它异常"); e.printStackTrace(); } } else { sendToastMessage("连接服务器超时"); } } 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; } }