客户测试过程中,发现Deliver.java 中调用OfferQueue 超过50会调用写入文件的函数,造成app crash。
authorsnickersun <scy@incartech.cn>
Thu, 5 Mar 2020 11:34:22 +0000 (19:34 +0800)
committersnickersun <scy@incartech.cn>
Thu, 5 Mar 2020 11:34:22 +0000 (19:34 +0800)
去掉写入文件部分,并且对queue满做判断,写不下的会被丢弃,但是会保留日志。
编译最新版本:V370

app/app.iml
app/release/ICSer_V369_2003051322_release.apk [deleted file]
app/release/ICSer_V370_2003051933_release.apk [new file with mode: 0644]
app/src/main/java/com/enqualcomm/support/LocationClient.java
app/src/main/java/com/enqualcomm/support/service/Deliver.java
app/src/main/java/com/enqualcomm/support/service/KeepAlive.java
app/src/main/java/com/enqualcomm/support/utils/ServiceUtil.java
app/version_code.properties

index 438d013..8fae7f3 100644 (file)
     <orderEntry type="library" name="Gradle: io.reactivex:rxandroid:1.1.0@aar" level="project" />\r
     <orderEntry type="module" module-name="dNSCache" />\r
     <orderEntry type="module" module-name="dNSCache" />\r
+    <orderEntry type="module" module-name="dNSCache" />\r
   </component>\r
 </module>
\ No newline at end of file
diff --git a/app/release/ICSer_V369_2003051322_release.apk b/app/release/ICSer_V369_2003051322_release.apk
deleted file mode 100644 (file)
index c9270f0..0000000
Binary files a/app/release/ICSer_V369_2003051322_release.apk and /dev/null differ
diff --git a/app/release/ICSer_V370_2003051933_release.apk b/app/release/ICSer_V370_2003051933_release.apk
new file mode 100644 (file)
index 0000000..a6c2512
Binary files /dev/null and b/app/release/ICSer_V370_2003051933_release.apk differ
index e421a94..fe6d375 100644 (file)
@@ -535,11 +535,11 @@ public void updateCellInfo() {
 \r
     (runtime.getContextProxy()).context.unregisterReceiver(this.screenOnReceiver);\r
     mLbsHelper.unRegisterBroadReceiver();\r
-    this.executor.execute(new Runnable() {\r
-      public void run() {\r
-        Deliver.saveQueue();\r
-      }\r
-    });\r
+//    this.executor.execute(new Runnable() {\r
+//      public void run() {\r
+//        Deliver.saveQueue();\r
+//      }\r
+//    });\r
     stopGpsLocate();\r
   }\r
 \r
index c7f0db5..c1343aa 100644 (file)
@@ -158,16 +158,23 @@ public class Deliver extends AbstractConnectionService {
 \r
   private static boolean checkNetwork(){\r
     boolean ret=true;\r
-    int signal=mRuntime.getSignalStrength();\r
-    int networkType=SimSignalUtil.getInstance((mRuntime.getContextProxy()).context).getNetworkType();\r
-    if (signal + 110 < getMinSignalStrength(networkType)) {\r
-      ICLogger.i("Skip Send for SignalStrengh "+(signal + 110 )+" < "+getMinSignalStrength(networkType));\r
-      //如果信号不好,把msg放回去\r
-      ret=false;\r
-    } else {\r
+    boolean dateConnectionLinked=SimSignalUtil.checkNet(mRuntime.getContextProxy().context);\r
+\r
+    if (dateConnectionLinked) {\r
+//      int signal = mRuntime.getSignalStrength();\r
+//      int networkType = SimSignalUtil.getInstance((mRuntime.getContextProxy()).context).getNetworkType();\r
+//      if (signal + 110 < getMinSignalStrength(networkType)) {\r
+//        ICLogger.i("Skip Send for SignalStrengh " + (signal + 110) + " < " + getMinSignalStrength(networkType));\r
+//        //如果信号不好,把msg放回去\r
+//        ret = false;\r
+//      }\r
       if (connection.isServerConnected() == false || !mRuntime.isServerProtocolConnected()) {\r
-        ret=false;\r
+        ICLogger.i("服务器无法访问,或者协议状态失常");\r
+        ret = false;\r
       }\r
+    }else{\r
+      ICLogger.i("数据网络没有连接");\r
+      ret=false;\r
     }\r
     return ret;\r
   }\r
@@ -202,7 +209,11 @@ public class Deliver extends AbstractConnectionService {
                 ret=true;\r
               } else {\r
                 //已经拿到的缓存,如果刚巧没有网络,就原路放回去\r
-                ServiceUtil.offerQueue(stringMessage,true);\r
+                ICLogger.i("网络不通,不能发送!");\r
+                if (!ServiceUtil.offerQueue(stringMessage,true)){\r
+                  ICLogger.i("MessageQueue 已满,数据将被丢弃!"+ stringMessage);\r
+                  if (Config.LOG_TOFILE) FileOutputUtil.fileOutput(mRuntime.getCacheDir(), "APILog", " queueFullskip!  " + stringMessage);\r
+                }\r
                 ret=false;\r
               }\r
             }else{\r
@@ -214,7 +225,7 @@ public class Deliver extends AbstractConnectionService {
           str = "no message!\n";\r
         }\r
         ICLogger.i("send cached cmd : \n"+str);\r
-        ICLogger.i("\n"+queue.size()+" left in Queue!");\r
+        ICLogger.i("\n"+queue.size()+" in Queue!");\r
       }finally {\r
         if(mLock!=null && mLock.isLocked())\r
           mLock.unlock();\r
@@ -222,59 +233,64 @@ public class Deliver extends AbstractConnectionService {
     }\r
     return ret;\r
   }\r
-  private static void loadMessage2Queue() {\r
-    byte b = 0;\r
-    //一次只处理5条数据\r
-    while (b < 5) {\r
-      String str = fileCache.load();\r
-      if (str != null) {\r
-        byte b1 = ++b;\r
-\r
-        try {\r
-          StringMessage stringMessage = new StringMessage(str);\r
-          //如果在queue中添加失败,则写回cache中\r
-          if (!queue.offerLast(stringMessage)) {\r
-            fileCache.put(str);\r
-          }\r
-        } catch (Exception e) {\r
-          e.printStackTrace();\r
-        }\r
-      }\r
-    }\r
-  }\r
-  public static void saveQueue() {\r
-    lock.lock();\r
-    try {\r
-      String str;\r
-      if (!queue.isEmpty()) {\r
-        StringBuilder stringBuilder = new StringBuilder();\r
-        StringMessage stringMessage = queue.poll();\r
-        while (stringMessage != null) {\r
-            String cmd=stringMessage.isFromCache();\r
-            stringBuilder.append(cmd);\r
-            stringBuilder.append("\n");\r
-            fileCache.put(cmd);\r
-            stringMessage = queue.poll();\r
-        }\r
-        str = stringBuilder.toString();\r
-      } else {\r
-        str = null;\r
-      }\r
-      ICLogger.i("save queue to cache : \n"+str);\r
-      lock.unlock();\r
-      return;\r
-    } finally {\r
-      if (lock!=null &&lock.isLocked())\r
-      lock.unlock();\r
-    }\r
-  }\r
+//  private static void loadMessage2Queue() {\r
+//    byte b = 0;\r
+//    //一次只处理5条数据\r
+//    while (b < 5) {\r
+//      String str = fileCache.load();\r
+//      if (str != null) {\r
+//        byte b1 = ++b;\r
+//\r
+//        try {\r
+//          StringMessage stringMessage = new StringMessage(str);\r
+//          //如果在queue中添加失败,则写回cache中\r
+//          if (!queue.offerLast(stringMessage)) {\r
+////            fileCache.put(str);\r
+//          }\r
+//        } catch (Exception e) {\r
+//          e.printStackTrace();\r
+//        }\r
+//      }\r
+//    }\r
+//  }\r
+//  public static void saveQueue() {\r
+//    lock.lock();\r
+//    try {\r
+//      String str;\r
+//      if (!queue.isEmpty()) {\r
+//        StringBuilder stringBuilder = new StringBuilder();\r
+//        StringMessage stringMessage = queue.poll();\r
+//        while (stringMessage != null) {\r
+//            String cmd=stringMessage.isFromCache();\r
+//            stringBuilder.append(cmd);\r
+//            stringBuilder.append("\n");\r
+////            fileCache.put(cmd);\r
+//            stringMessage = queue.poll();\r
+//        }\r
+//        str = stringBuilder.toString();\r
+//      } else {\r
+//        str = null;\r
+//      }\r
+//      ICLogger.i("save queue to cache : \n"+str);\r
+//      lock.unlock();\r
+//      return;\r
+//    } finally {\r
+//      if (lock!=null &&lock.isLocked())\r
+//      lock.unlock();\r
+//    }\r
+//  }\r
 \r
 \r
 public static void sendLocationMSG( String Msg){\r
 \r
     if(mRuntime.getUseQueue()){\r
-      ServiceUtil.offerQueue(protocolAPIHelper.genStringMessage("queue",Msg));\r
+      if(!ServiceUtil.offerQueue(protocolAPIHelper.genStringMessage("queue",Msg))) {\r
+        ICLogger.i(" MessageQueue 已满,数据将被丢弃," + Msg);\r
+        if (Config.LOG_TOFILE) FileOutputUtil.fileOutput(mRuntime.getCacheDir(), "APILog", " queueFullskip  " + Msg);\r
+\r
+      }\r
       triggerSendThread();\r
+\r
     }else {\r
       if (checkNetwork()) {\r
         ICLogger.i(" first send " + Msg);\r
index 8df8006..7c7e1e3 100644 (file)
@@ -253,16 +253,17 @@ public class KeepAlive extends AbstractConnectionService {
     //心跳开始发送的时候,先重置response检测标志\r
     is_heartBeat_send_success=false;\r
     //发送心跳包\r
-    Observable.timer(5500L, TimeUnit.MILLISECONDS).subscribe(new Action1<Long>() {\r
+    Observable.timer(3500L, TimeUnit.MILLISECONDS).subscribe(new Action1<Long>() {\r
       public void call(Long param1Long) {\r
         //这时重新连接服务器才进行的连接,理论上close已经设置false,此次可以认为协议定然断开,所以设置为false作为双重保险。\r
         mRuntime.setServerProtocolConnected(false);\r
         connection.send(protocolAPIHelper.genStringMessage("heart",protocolAPIHelper.AP03(paramRuntime)));\r
         //发送完心跳后,开始检查服务器响应\r
-         startResponseCheckTimer();\r
+        startResponseCheckTimer();\r
       }\r
     });\r
 \r
+\r
      isConnected = true;\r
     this.firstReConnected = true;\r
     this.idleTimeMillis = SystemClock.elapsedRealtime();\r
index 061b219..cad93b0 100644 (file)
@@ -10,21 +10,23 @@ import java.util.concurrent.LinkedBlockingDeque;
 \r
 public class ServiceUtil {\r
 \r
-  public static void offerQueue(StringMessage paramStringMessage) {\r
-    offerQueue(paramStringMessage, false);\r
+  public static boolean offerQueue(StringMessage paramStringMessage) {\r
+    return offerQueue(paramStringMessage, false);\r
   }\r
 \r
-  public static void offerQueue(StringMessage paramStringMessage, boolean paramBoolean) {\r
+  public static boolean offerQueue(StringMessage paramStringMessage, boolean paramBoolean) {\r
     if (paramBoolean) {\r
       if (!Deliver.queue.offerFirst(paramStringMessage)) {\r
-        Deliver.saveQueue();\r
-        Deliver.queue.offerFirst(paramStringMessage);\r
-        return;\r
+//        Deliver.saveQueue();\r
+//        Deliver.queue.offerFirst(paramStringMessage);\r
+        return false;\r
       } \r
     } else if (!Deliver.queue.offerLast(paramStringMessage)) {\r
-      Deliver.saveQueue();\r
-      Deliver.queue.offerLast(paramStringMessage);\r
-    } \r
+//      Deliver.saveQueue();\r
+//      Deliver.queue.offerLast(paramStringMessage);\r
+      return false;\r
+    }\r
+    return true;\r
   }\r
 \r
 \r
index d458487..05c27cb 100644 (file)
@@ -1,2 +1,2 @@
-#Thu Mar 05 13:22:46 CST 2020\r
-VERSION_CODE=369\r
+#Thu Mar 05 19:33:06 CST 2020\r
+VERSION_CODE=370\r