// mSendMSGHandler.sendEmptyMessage(1);\r
}\r
\r
+ private static boolean NeedCheckServerResponse=true;\r
+ private static boolean ServerResponsed=false;\r
+ private static String needCheckResponseCMD=null;\r
+ private static int CheckCount=0;\r
+\r
public static boolean getAndSendMsgFromQueue(){\r
boolean ret=false;\r
if (mRuntime.getUseQueue()) {\r
//如果没有数据从缓存中尝试读取\r
// if (queue.isEmpty())\r
// loadMessage2Queue();\r
+ if (NeedCheckServerResponse==true && ServerResponsed==false){\r
+ if (needCheckResponseCMD!=null && CheckCount < 3) {\r
+ //如果cmd有效,且尝试次数小于3, 没有收到反馈的情况下,可以重新插入queue进行下一次尝试!\r
+ ICLogger.i("checkSrvResponse "+CheckCount+" times for "+needCheckResponseCMD);\r
+ if (!ServiceUtil.offerQueue(new StringMessage(needCheckResponseCMD), true)) {\r
+ ICLogger.i("checkSrvResponse failed ,重新添加MessageQueue 已满,数据将被丢弃!" + needCheckResponseCMD);\r
+ if (Config.LOG_TOFILE)\r
+ ICLogger.logToFile("APILog", "response failed queueFullskip! " + needCheckResponseCMD);\r
+ }else{\r
+ if (Config.LOG_TOFILE)\r
+ ICLogger.logToFile("APILog", "response failed retry ! " +CheckCount+" " + needCheckResponseCMD);\r
+ }\r
+ CheckCount++;\r
+ }else{\r
+ ICLogger.i("checkSrvResponse CheckCount="+CheckCount+" Timeout or cmd is null, skip ");\r
+ if (Config.LOG_TOFILE)\r
+ ICLogger.logToFile("APILog", "response timeout skip! " + needCheckResponseCMD);\r
+ CheckCount=0;\r
+ }\r
+ }\r
+\r
if (!queue.isEmpty()) {\r
StringBuilder stringBuilder = new StringBuilder();\r
if (checkNetwork()) {\r
if (checkNetwork()) {\r
connection.sendMsg(cmd);\r
// stringMessage = queue.poll();\r
+\r
+ //如果需要Check\r
+ if (NeedCheckServerResponse==true){\r
+ ICLogger.i("checkSrvResponse "+cmd);\r
+ needCheckResponseCMD=cmd;\r
+ ServerResponsed=false;\r
+ }\r
ret=true;\r
} else {\r
//已经拿到的缓存,如果刚巧没有网络,就原路放回去\r
this.mConnection = paramConnection;\r
this.mRuntime = paramRuntime;\r
String cmd = paramStringMessage.cmd();\r
+\r
+ //如果需要检测是否响应。\r
+ if (NeedCheckServerResponse==true){\r
+\r
+ if(needCheckResponseCMD!=null) {\r
+ if( cmd.equals(needCheckResponseCMD.substring(0,6))){\r
+\r
+ ICLogger.i("checkSrvResponse "+cmd+" "+needCheckResponseCMD.substring(0,6)+" is responsed!");\r
+ ServerResponsed=true;\r
+ CheckCount=0;\r
+ }\r
+ }\r
+ }\r
ICLogger.i("Deliver receive cmd " + paramStringMessage.cmd());\r
if (cmd.equals("BP07") || cmd.equals("SentVoicePacket")) {\r
//收到BP07 表示服务器收到一个voicePacket 分包成功,开始检查下一个包是否存在需要发送。\r