修改Deliver Sending loop 发送逻辑,保证不会因为重复调用TriggerSendThread造成发送逻辑混乱。
authorsnickersun <scy@incartech.cn>
Thu, 19 Nov 2020 07:13:24 +0000 (15:13 +0800)
committersnickersun <scy@incartech.cn>
Thu, 19 Nov 2020 07:13:24 +0000 (15:13 +0800)
app/src/main/java/com/enqualcomm/support/service/Deliver.java

index cc7adc2..6b6950e 100644 (file)
@@ -61,6 +61,7 @@ public class Deliver extends AbstractConnectionService {
   \r
   private static int isAppSetWifi = 0;\r
 \r
+  private static boolean sendloopruning=false;\r
 \r
 \r
   private static ReentrantLock mLock = new ReentrantLock();\r
@@ -104,10 +105,13 @@ public class Deliver extends AbstractConnectionService {
     delaySendMSG = new Runnable() {\r
       @Override\r
       public void run() {\r
-        mSendMSGHandler.removeCallbacks(delaySendMSG);\r
-        if (getAndSendMsgFromQueue()==true){\r
-          mSendMSGHandler.postDelayed(delaySendMSG,5000L);\r
-        }\r
+        sendloopruning=true;\r
+        while(getAndSendMsgFromQueue()==true)\r
+        {\r
+          //数据发送成功,则5秒后进行下一轮发送\r
+          Util.mSleep(5000);\r
+        } //没有数据可以发送,则退出sendloop\r
+        sendloopruning=false;\r
       }\r
     };\r
   }\r
@@ -143,9 +147,14 @@ public class Deliver extends AbstractConnectionService {
   }\r
   public static void triggerSendThread() {\r
 \r
-    mSendMSGHandler.removeCallbacks(delaySendMSG);\r
-    mSendMSGHandler.post(delaySendMSG);\r
-    ICLogger.i("triggerSendThread ");\r
+\r
+    if(sendloopruning==false) {\r
+      ICLogger.i("triggerSendThread !");\r
+      mSendMSGHandler.post(delaySendMSG);\r
+    }else{\r
+      ICLogger.i("triggerSendThread running skip !");\r
+    }\r
+\r
 //    delaySendMSG.run();\r
 //    mSendMSGHandler.sendEmptyMessage(1);\r
   }\r