1、优化函数,尽量去除常用函数中不必要的 new Handler 及 new Runnable
authorsnickersun <snickersun@qq.com>
Thu, 22 Oct 2020 00:13:16 +0000 (08:13 +0800)
committersnickersun <snickersun@qq.com>
Thu, 22 Oct 2020 00:13:16 +0000 (08:13 +0800)
2、添加Util.mSleep函数
3、优化 Login,Heartbeat流程,减少不必要的数据发送,严格按照login成功才发送heartbeat,heartbeat成功才发送其他的逻辑。

15 files changed:
app/app.iml
app/src/main/java/com/enqualcomm/support/CoreService.java
app/src/main/java/com/enqualcomm/support/CrashHandler.java
app/src/main/java/com/enqualcomm/support/LocationClient.java
app/src/main/java/com/enqualcomm/support/adapter/BTHelper.java
app/src/main/java/com/enqualcomm/support/adapter/LBSHelper.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/toolActivity.java
app/src/main/java/com/enqualcomm/support/utils/CameraUtil.java
app/src/main/java/com/enqualcomm/support/utils/ContextProxy.java
app/src/main/java/com/enqualcomm/support/utils/DnsUtil.java
app/src/main/java/com/enqualcomm/support/utils/ProcessReceiver.java
app/src/main/java/com/enqualcomm/support/utils/TemperatureUtil.java
app/src/main/java/com/enqualcomm/support/utils/Util.java

index 497b2ac..e442beb 100644 (file)
     <output-test url="file://$MODULE_DIR$/build/intermediates/javac/debugUnitTest/classes"/>\r
     <exclude-output/>\r
     <content url="file://$MODULE_DIR$">\r
-      <sourceFolder url="file://$MODULE_DIR$/build/generated/renderscript_source_output_dir/debug/compileDebugRenderscript/out" isTestSource="false" generated="true"/>\r
-      <sourceFolder url="file://$MODULE_DIR$/build/generated/aidl_source_output_dir/debug/compileDebugAidl/out" isTestSource="false" generated="true"/>\r
       <sourceFolder url="file://$MODULE_DIR$/build/generated/ap_generated_sources/debug/out" isTestSource="false" generated="true"/>\r
+      <sourceFolder url="file://$MODULE_DIR$/build/generated/aidl_source_output_dir/debug/compileDebugAidl/out" isTestSource="false" generated="true"/>\r
       <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/debug" isTestSource="false" generated="true"/>\r
+      <sourceFolder url="file://$MODULE_DIR$/build/generated/renderscript_source_output_dir/debug/compileDebugRenderscript/out" isTestSource="false" generated="true"/>\r
       <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" generated="true"/>\r
       <sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/debug" type="java-resource" generated="true"/>\r
-      <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true"/>\r
-      <sourceFolder url="file://$MODULE_DIR$/build/generated/aidl_source_output_dir/debugAndroidTest/compileDebugAndroidTestAidl/out" isTestSource="true" generated="true"/>\r
       <sourceFolder url="file://$MODULE_DIR$/build/generated/ap_generated_sources/debugAndroidTest/out" isTestSource="true" generated="true"/>\r
+      <sourceFolder url="file://$MODULE_DIR$/build/generated/aidl_source_output_dir/debugAndroidTest/compileDebugAndroidTestAidl/out" isTestSource="true" generated="true"/>\r
+      <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true"/>\r
       <sourceFolder url="file://$MODULE_DIR$/build/generated/renderscript_source_output_dir/debugAndroidTest/compileDebugAndroidTestRenderscript/out" isTestSource="true" generated="true"/>\r
       <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/debug" type="java-test-resource" generated="true"/>\r
       <sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/androidTest/debug" type="java-test-resource" generated="true"/>\r
index 52d32b6..3f3765f 100644 (file)
@@ -121,6 +121,7 @@ public class CoreService extends Service {
     // SPRD: add outdoorMode\r
     public static final int RINGER_MODE_OUTDOOR = 3;\r
 \r
+    public static Handler mHandler=new Handler();\r
     private static ICSmsManager smsManager=null;\r
     public String getServerAlive(){\r
        return DeviceInfoUtil.getDeviceInfo(runtime);\r
@@ -223,17 +224,21 @@ public class CoreService extends Service {
 \r
                    if(Config.SOSNoNeedDial==false) {\r
                        //50ms后开始拨打电话\r
-                       new Handler().postDelayed(new Runnable() {\r
-                           @Override\r
-                           public void run() {\r
-                               trigger_SOS_Call();\r
-                           }\r
-                       },500);\r
+                       mHandler.postDelayed(mTriggerSOSCALLThread,500);\r
                    }\r
                 }\r
         }\r
     };\r
 \r
+    private TriggerSOSCALLThread mTriggerSOSCALLThread=new TriggerSOSCALLThread();\r
+\r
+    private  class TriggerSOSCALLThread implements  Runnable{\r
+\r
+        @Override\r
+        public void run() {\r
+            trigger_SOS_Call();\r
+        }\r
+    }\r
     private void trigger_SOS_Call(){\r
         try {\r
             Intent intent = new Intent("com.eqc.shutdown_sos");\r
@@ -244,6 +249,15 @@ public class CoreService extends Service {
             e.printStackTrace();\r
         }\r
     }\r
+    private  Runnable mupdatePracticeData=new Runnable(){\r
+        @Override\r
+        public void run() {\r
+            //ICHttpUtil.uploadData(Runtime.healthInfo.getBufferDataStr(),runtime,TimeUtil.getSystemTime2(),null);\r
+            Deliver.sendLocationMSG(protocolAPIHelper.getPRACTICE());\r
+            //发送过后重置\r
+            Runtime.healthInfo.resetBuffer();\r
+        }\r
+    };\r
 \r
     private BroadcastReceiver broadcastPracticeCMDReceiver = new BroadcastReceiver() {\r
         public void onReceive(Context param1Context, Intent param1Intent) {\r
@@ -272,21 +286,14 @@ public class CoreService extends Service {
                     if(Runtime.healthInfo.getInfoCount()>=0){\r
                         //超过30次发送数据给服务器\r
                         ICLogger.i("自由锻炼结束,发送数据给服务器 "+Runtime.healthInfo.getBufferData().length);\r
-                        new Handler().post(new Runnable() {\r
-                            @Override\r
-                            public void run() {\r
-                                //ICHttpUtil.uploadData(Runtime.healthInfo.getBufferDataStr(),runtime,TimeUtil.getSystemTime2(),null);\r
-                                Deliver.sendLocationMSG(protocolAPIHelper.getPRACTICE());\r
-                                //发送过后重置\r
-                                Runtime.healthInfo.resetBuffer();\r
-                            }\r
-                        });\r
+                        mHandler.post(mupdatePracticeData);\r
                     }\r
 \r
                 }\r
             }\r
         }\r
     };\r
+\r
     private static class ServerHandler implements ConnectionListener {\r
         private final WeakReference<CoreService> mReference;\r
 \r
@@ -371,18 +378,7 @@ public class CoreService extends Service {
                 //为了保证唤醒时各个状态及时更新到服务器,发送一个同步心跳包,这样用户体验更好\r
                 CoreService.this.locationClient.updateStepCount();\r
 \r
-                new Handler().postDelayed(new Runnable() {\r
-                    @Override\r
-                    public void run() {\r
-                        if (connection.isServerConnected()&& runtime.isServerProtocolConnected()) {\r
-                            mKeepAlive.onHeartAlarm(connection, runtime);\r
-                        }else{\r
-                            ICLogger.i("check 发送心跳包时,如果发现服务器没有响应,或者socket连接,则重新尝试连接服务器!");\r
-                            connection.disconnectServer();\r
-                            startConnectionRetryTimer();\r
-                        }\r
-                    }\r
-                },500);\r
+                mHandler.postDelayed(mRetryConnectSrvThread,500);\r
 \r
 \r
                 if (CoreService.is_wifi_network_ok) {\r
@@ -404,6 +400,18 @@ public class CoreService extends Service {
         }\r
     };\r
 \r
+    private Runnable mRetryConnectSrvThread=new Runnable(){\r
+        @Override\r
+        public void run() {\r
+            if (connection.isServerConnected()&& runtime.isServerProtocolConnected()) {\r
+                mKeepAlive.onHeartAlarm(connection, runtime);\r
+            }else{\r
+                ICLogger.i("check 发送心跳包时,如果发现服务器没有响应,或者socket连接,则重新尝试连接服务器!");\r
+                connection.disconnectServer();\r
+                startConnectionRetryTimer();\r
+            }\r
+        }\r
+    };\r
 \r
     private int startAlarmCount = 0;\r
 \r
@@ -506,27 +514,25 @@ public class CoreService extends Service {
         //只有周期大于1才有效,否则就等于单次测量\r
         if (Runtime.practice_cycle>1)\r
             AlarmHelper.setRealTimeAlarmInSeconds(runtime.getContextProxy().context,Runtime.practice_cycle,Constants.ACTION_PRACTICE_REPORT_ALARM);\r
+        mHandler.post(mdoPracticeCheck);\r
+    }\r
+    private Runnable mdoPracticeCheck=new Runnable(){\r
+        @Override\r
+        public void run() {\r
+            //获取并设置当前步数\r
+            ICLogger.i("自由锻炼中,设置步数 "+runtime.getTotalStepCount());\r
+            Runtime.healthInfo.setStepCount(runtime.getTotalStepCount());\r
+            //开启定位\r
+            //        locationClient.triggerLocationProcess();\r
+            //开启测温\r
+            TemperatureUtil.DoTempTest();\r
+\r
+            //开启测量PPG\r
+            HeartRateManager.triggerPPGtest();\r
 \r
-        new Thread(new Runnable() {\r
-            @Override\r
-            public void run() {\r
-                //获取并设置当前步数\r
-                ICLogger.i("自由锻炼中,设置步数 "+runtime.getTotalStepCount());\r
-                Runtime.healthInfo.setStepCount(runtime.getTotalStepCount());\r
-                //开启定位\r
-                //        locationClient.triggerLocationProcess();\r
-                //开启测温\r
-                TemperatureUtil.DoTempTest();\r
-\r
-                //开启测量PPG\r
-                HeartRateManager.triggerPPGtest();\r
-\r
-\r
-            }\r
-        }).start();\r
-\r
+        }\r
+    };\r
 \r
-    }\r
     private void checkconnection(){\r
 \r
         if (!this.connection.isServerConnected())\r
@@ -705,12 +711,28 @@ public class CoreService extends Service {
 //                }\r
             }\r
         }else if (Config.custom_name.equals("JIAI")) { //L02\r
+            if (Config.getConfigInitFlag(this) == 0) {\r
+                Config.setPPGTestCycle(this, 0);\r
+                Config.setTemperatureTestCycle(runtime, 0);\r
+                Config.forceMoveCheck = false; //即爱对gps不进行运动检测,此变量专门为了给其他协议进行强制运动检测用的。\r
+                Config.setConfigInitFlag(this, 1);\r
+            }\r
+\r
+        }else if (Config.custom_name.equals("VitracK")){\r
+\r
+            Config.ConfigAlarm(Runtime.AlarmType.ALARM_SOS,true);\r
+            Config.ConfigAlarm(Runtime.AlarmType.ALARM_LOWBATTERY,true);\r
+            Config.ConfigAlarm(Runtime.AlarmType.ALARM_WEARED,true);\r
+            Config.ConfigAlarm(Runtime.AlarmType.ALARM_ANTIOFF,true);\r
+            Config.enableSleep=false;\r
             if (Config.getConfigInitFlag(this)==0) {\r
+                Config.setLocationMode(this, CUSTOM_MOD8_GPS);\r
+                Config.setLocationCycle(this, 30*60);\r
                 Config.setPPGTestCycle(this, 0);\r
                 Config.setTemperatureTestCycle(runtime, 0);\r
-                Config.forceMoveCheck=false; //即爱对gps不进行运动检测,此变量专门为了给其他协议进行强制运动检测用的。\r
                 Config.setConfigInitFlag(this, 1);\r
             }\r
+\r
         }else{\r
 \r
             if (Config.getConfigInitFlag(this)==0) {\r
@@ -924,11 +946,7 @@ public class CoreService extends Service {
                     ICLogger.i("SitCheck 平均 每分钟活动数 小于参考久坐计步值,表示久坐");\r
                     WakeLockUtil.ScreenOnWakeLockTemperary(this);\r
                     VibrateUtil.getInstance(this).VibrateOn(true);\r
-                    try {\r
-                        Thread.sleep(1000);\r
-                    } catch (InterruptedException e) {\r
-                        e.printStackTrace();\r
-                    }\r
+                    Util.mSleep(1000);\r
                     runtime.getContextProxy().sendBroadcastSitLongAlarm(); //广播久坐消息\r
                     //提醒后 重置 lastCheckSitTime 以及 lastSitCheckStepCount , 重新计时\r
                     Runtime.lastSitCheckStepCount=runtime.getTotalStepCount();\r
@@ -1391,15 +1409,17 @@ public class CoreService extends Service {
             retry_connect_count=0;\r
             KeepAlive.isConnected = false;\r
             if (mTimer_retry_connect != null) {\r
-                mTimer_retry_connect.scheduleAtFixedRate(new Runnable() {\r
-                    @Override\r
-                    public void run() {\r
-                        ReConnectToServer();\r
-                    }\r
-                }, 5000, 20000, TimeUnit.MILLISECONDS); //每次都是断网才需要重连,delay 5秒重连,并且每20秒重试一次\r
+                mTimer_retry_connect.scheduleAtFixedRate(mReConnectSrvThread, 5000, 20000, TimeUnit.MILLISECONDS); //每次都是断网才需要重连,delay 5秒重连,并且每20秒重试一次\r
             }\r
 //        }\r
     }\r
+    private ReConnectSrvThread mReConnectSrvThread=new ReConnectSrvThread();\r
+    private class ReConnectSrvThread implements  Runnable{\r
+        @Override\r
+        public void run() {\r
+            ReConnectToServer();\r
+        }\r
+    }\r
 \r
     private static int no_network_Heartbeats_Count=0;\r
 \r
index 87517b7..bc5536a 100644 (file)
@@ -11,6 +11,7 @@ import android.widget.Toast;
 \r
 import com.enqualcomm.support.R;\r
 import com.enqualcomm.support.utils.StorageUtils;\r
+import com.enqualcomm.support.utils.Util;\r
 \r
 import java.io.File;\r
 import java.io.FileOutputStream;\r
@@ -82,12 +83,7 @@ public class CrashHandler implements Thread.UncaughtExceptionHandler {
             // 如果用户没有处理则让系统默认的异常处理器来处理\r
             mDefaultHandler.uncaughtException(thread, ex);\r
         } else {\r
-            try {\r
-                Thread.sleep(3000);\r
-            } catch (InterruptedException e) {\r
-//                Log.e(TAG, "error : " + e);\r
-                e.printStackTrace();\r
-            }\r
+            Util.mSleep(1000);\r
         }\r
 \r
         // 退出程序\r
index 8a38105..c9a9f34 100644 (file)
@@ -13,6 +13,7 @@ import com.enqualcomm.support.adapter.BTHelper;
 import com.enqualcomm.support.utils.AlarmHelper;\r
 import com.enqualcomm.support.adapter.LBSHelper;\r
 import com.enqualcomm.support.utils.Connection;\r
+import com.enqualcomm.support.utils.Util;\r
 import com.ic.protocols.protocolAPIHelper;\r
 import com.enqualcomm.support.bean.ICLocation;\r
 import com.enqualcomm.support.bean.StringMessage;\r
@@ -162,9 +163,7 @@ public class LocationClient {
             }\r
             if(in_area == false && ScanBLERetryCount-- > 0){\r
                 //如果没有扫描到,且扫描次数没有超限,则重新扫描一次。注意要delay 5秒\r
-              try{\r
-                Thread.sleep(5000);\r
-              }catch ( Exception e){}\r
+              Util.mSleep(5000);\r
                 //Do retry Scan\r
                 ICLogger.i("BT BLE not found retry Scan "+ ScanBLERetryCount);\r
                 btHelper.scanBLE();\r
@@ -470,9 +469,7 @@ public class LocationClient {
                     btHelper.scanBLE();\r
                 }\r
               } else {\r
-                try{\r
-                  Thread.sleep(1000);\r
-                }catch (Exception e){}\r
+                Util.mSleep(1000);\r
                 StringMessage waningmsg=protocolAPIHelper.getWarningMSG(runtime);\r
                 DeliverMessage(waningmsg);\r
               }\r
index 689ad8b..f89a3fe 100644 (file)
@@ -11,6 +11,7 @@ import android.os.Handler;
 import com.enqualcomm.support.bean.Runtime;\r
 import com.enqualcomm.support.Config;\r
 import com.enqualcomm.support.utils.ICLogger;\r
+import com.enqualcomm.support.utils.Util;\r
 \r
 import java.util.ArrayList;\r
 import java.util.Set;\r
@@ -56,11 +57,7 @@ public class BTHelper {
         if (!mBtAdapter.isEnabled()) {\r
 \r
             mBtAdapter.enable();\r
-            try {\r
-                Thread.sleep(2000);\r
-            } catch (InterruptedException e) {\r
-                e.printStackTrace();\r
-            }\r
+            Util.mSleep(2000);\r
             //此处无法执行说没权限\r
 //            mBtAdapter.enableNoAutoConnect();\r
         }\r
index e0a3f4b..6ce206d 100644 (file)
@@ -31,6 +31,7 @@ import com.enqualcomm.support.utils.DeviceInfoUtil;
 import com.enqualcomm.support.utils.FileOutputUtil;\r
 import com.enqualcomm.support.utils.ICLogger;\r
 import com.enqualcomm.support.utils.SimSignalUtil;\r
+import com.enqualcomm.support.utils.Util;\r
 \r
 import java.util.Collections;\r
 import java.util.Comparator;\r
@@ -133,38 +134,34 @@ public class LBSHelper {
 \r
 //            Single.just(null).observeOn(AndroidSchedulers.mainThread()).subscribe(new Action1<Object>() {\r
 //            public void call(Object param1Object) {\r
+            Util.mSleep(500);\r
 \r
-            new Handler().postDelayed(new Runnable() {\r
-                @Override\r
-                public void run() {\r
-                    //由于wifi状态不好确认客户是如何设置的,干脆只有屏幕灭的时候才考虑关闭wifi ,防止在开启屏幕用来视频的时候被后台关掉\r
-                    ICLogger.i("setWifiEnabled false");\r
+                //由于wifi状态不好确认客户是如何设置的,干脆只有屏幕灭的时候才考虑关闭wifi ,防止在开启屏幕用来视频的时候被后台关掉\r
+                ICLogger.i("setWifiEnabled false");\r
 //                    if(SimSignalUtil.isScreenON(runtime.getContextProxy().context)==false) {\r
-                    if (runtime.isNoTurnOffWifiOnScreenOff() || DeviceInfoUtil.isFactoryTestTopActivity(runtime.getContextProxy().context)) {\r
-                        //如果 NoTurnOffWifiOnScreenOff 开关 开启,且是屏灭,或者是在工厂测试模式,则原来什么状态就什么状态。\r
-                        ICLogger.i("isNoTurnOffWifiOnScreenOff or In Factory Mode");\r
-                        if (!IS_HASOPEN && IS_OPEN) {\r
+                if (runtime.isNoTurnOffWifiOnScreenOff() || DeviceInfoUtil.isFactoryTestTopActivity(runtime.getContextProxy().context)) {\r
+                    //如果 NoTurnOffWifiOnScreenOff 开关 开启,且是屏灭,或者是在工厂测试模式,则原来什么状态就什么状态。\r
+                    ICLogger.i("isNoTurnOffWifiOnScreenOff or In Factory Mode");\r
+                    if (!IS_HASOPEN && IS_OPEN) {\r
 //                                wifiManager.setWifiEnabled(false);\r
-                            IS_OPEN = false;\r
-                        }\r
-                    } else  {\r
-                        //如果 NoTurnOffWifiOnScreenOff 开关 关闭,且是屏灭,则关闭wifi省电\r
-                        ICLogger.i("isTurnOffWifiOnScreenOff");\r
-                        wifiManager.setWifiEnabled(false);\r
                         IS_OPEN = false;\r
-                        IS_HASOPEN = false;\r
-\r
                     }\r
+                } else  {\r
+                    //如果 NoTurnOffWifiOnScreenOff 开关 关闭,且是屏灭,则关闭wifi省电\r
+                    ICLogger.i("isTurnOffWifiOnScreenOff");\r
+                    wifiManager.setWifiEnabled(false);\r
+                    IS_OPEN = false;\r
+                    IS_HASOPEN = false;\r
+\r
+                }\r
 //                    }else{\r
 //                        ICLogger.i("isTurnOffWifiOnScreenOff");\r
 //                        wifiManager.setWifiEnabled(false);\r
 //                        IS_OPEN = false;\r
 //                        IS_HASOPEN = false;\r
 //                    }\r
-                    ICLogger.i("setWifiEnabled done");\r
+                ICLogger.i("setWifiEnabled done");\r
 \r
-                }\r
-            },500);\r
 \r
         }else{\r
             ICLogger.i("mMyWifiListener is null skip callback");\r
@@ -224,11 +221,7 @@ public class LBSHelper {
         } else {\r
             this.wifiManager.setWifiEnabled(true);\r
             this.IS_OPEN = true;\r
-            try {\r
-                Thread.sleep(500);\r
-            } catch (InterruptedException e) {\r
-                e.printStackTrace();\r
-            }\r
+            Util.mSleep(500);\r
         }\r
         //wait_count=0;\r
         CurrentWiFiScanTimes=0;\r
index 8142dbd..e12aeeb 100644 (file)
@@ -140,9 +140,9 @@ public class Deliver extends AbstractConnectionService {
     return ret;\r
   }\r
   public static void triggerSendThread() {\r
-//    mSendMSGHandler.post(delaySendMSG);\r
+    mSendMSGHandler.post(delaySendMSG);\r
     ICLogger.i("triggerSendThread ");\r
-    delaySendMSG.run();\r
+//    delaySendMSG.run();\r
 //    mSendMSGHandler.sendEmptyMessage(1);\r
   }\r
   private static boolean NeedCheckServerResponse=true;\r
@@ -393,10 +393,7 @@ public class Deliver extends AbstractConnectionService {
         //开启测温\r
         TemperatureUtil.DoTempTest();\r
 \r
-        try {\r
-          Thread.sleep(5000);\r
-        } catch (Exception e) {\r
-        }\r
+        Util.mSleep(5000);\r
         //开启测量PPG\r
         HeartRateManager.triggerPPGtest();\r
       }\r
@@ -415,7 +412,7 @@ public class Deliver extends AbstractConnectionService {
           }else{\r
             Util.ShowToast(paramRuntime,"Do poweroff!");\r
          }\r
-      new Handler().postDelayed(new Runnable() {\r
+      mSendMSGHandler.postDelayed(new Runnable() {\r
         @Override\r
         public void run() {\r
           Util.shutdown();\r
@@ -433,7 +430,7 @@ public class Deliver extends AbstractConnectionService {
         }else{\r
           Util.ShowToast(paramRuntime,"Do FactoryReset!");\r
         }\r
-      new Handler().postDelayed(new Runnable() {\r
+      mSendMSGHandler.postDelayed(new Runnable() {\r
         @Override\r
         public void run() {\r
           Util.doMasterClear(paramRuntime.getContextProxy().context);\r
@@ -442,7 +439,7 @@ public class Deliver extends AbstractConnectionService {
       return true;\r
     } else if ("poweroff".equals(paramStringMessage.cmd())) {\r
       paramRuntime.setShutdown(true);\r
-      new Handler().postDelayed(new Runnable() {\r
+      mSendMSGHandler.postDelayed(new Runnable() {\r
         @Override\r
         public void run() {\r
           Util.shutdown();\r
@@ -450,7 +447,7 @@ public class Deliver extends AbstractConnectionService {
       },500);\r
       return true;\r
     } else if ("FactoryReset".equals(paramStringMessage.cmd())) {\r
-      new Handler().postDelayed(new Runnable() {\r
+      mSendMSGHandler.postDelayed(new Runnable() {\r
         @Override\r
         public void run() {\r
           Util.doMasterClear(paramRuntime.getContextProxy().context);\r
@@ -458,7 +455,7 @@ public class Deliver extends AbstractConnectionService {
       },500);\r
       return true;\r
     } else if ("Reboot".equals(paramStringMessage.cmd())) {\r
-      new Handler().postDelayed(new Runnable() {\r
+      mSendMSGHandler.postDelayed(new Runnable() {\r
         @Override\r
         public void run() {\r
           Util.reboot(paramRuntime.getContextProxy().context);\r
@@ -474,7 +471,7 @@ public class Deliver extends AbstractConnectionService {
       mConnection.send(protocolAPIHelper.getWeatherMSG(mRuntime));\r
     } else if ("NewVoice".equals(paramStringMessage.cmd()))\r
     {\r
-      new Handler().postDelayed(new Runnable() {\r
+      mSendMSGHandler.postDelayed(new Runnable() {\r
         @Override\r
         public void run() {\r
           final Context context = (Deliver.this.mRuntime.getContextProxy()).context;\r
@@ -513,7 +510,7 @@ public class Deliver extends AbstractConnectionService {
     return true;\r
   }else if ("findDev".equals(paramStringMessage.cmd())) {\r
 \r
-      new Handler().postDelayed(new Runnable() {\r
+      mSendMSGHandler.postDelayed(new Runnable() {\r
         @Override\r
         public void run() {\r
           final Context context = (Deliver.this.mRuntime.getContextProxy()).context;\r
@@ -531,13 +528,13 @@ public class Deliver extends AbstractConnectionService {
 \r
       String recordfilepath=Util.getRecordfilePath(mRuntime, TimeUtil.getSystemTime3());\r
       int recordtime=Integer.parseInt(paramStringMessage.isFromCache().trim());\r
-      new Handler().post(new Runnable() {\r
+      mSendMSGHandler.post(new Runnable() {\r
         @Override\r
         public void run() {\r
           AudioService.getInstance().startRecord(recordfilepath);\r
         }\r
       });\r
-      new Handler().postDelayed(new Runnable() {\r
+      mSendMSGHandler.postDelayed(new Runnable() {\r
         @Override\r
         public void run() {\r
           AudioService.getInstance().stopRecord();\r
index 1ad197f..a9a37f5 100644 (file)
@@ -10,6 +10,7 @@ import android.os.Handler;
 import com.enqualcomm.support.Config;\r
 import com.enqualcomm.support.CoreService;\r
 import com.enqualcomm.support.LocationClient;\r
+import com.enqualcomm.support.utils.Util;\r
 import com.ic.protocols.protocolAPIHelper;\r
 import com.enqualcomm.support.bean.StringMessage;\r
 import com.enqualcomm.support.service.base.AbstractConnectionService;\r
@@ -61,6 +62,7 @@ public class KeepAlive extends AbstractConnectionService {
   //每次retry发送心跳的间隔为20秒\r
   private int heartBeatRetryTimeout=20;\r
 \r
+  private Handler mHandler=new Handler();\r
   //监测 心跳服务器响应的timer\r
   private ScheduledThreadPoolExecutor scheduled = null;\r
   private Runnable CheckSrvResponseTimerTask=new Runnable() {\r
@@ -88,6 +90,20 @@ public class KeepAlive extends AbstractConnectionService {
     }\r
   }\r
 \r
+  private Runnable msendMsgAfterHeartbeat=new Runnable() {\r
+    @Override\r
+    public void run() {\r
+      connection.send(protocolAPIHelper.getBindingMSG(mRuntime));\r
+      if (Config.protocol_no==Config.PROTOCOL_FZD){\r
+        mHandler.postDelayed(new Runnable() {\r
+          @Override\r
+          public void run() {\r
+            connection.send(protocolAPIHelper.getSyncTimeMSG(mRuntime));\r
+          }\r
+        },5000);\r
+      }\r
+    }\r
+  };\r
 \r
   public void checkSrvResponse(){\r
 \r
@@ -124,23 +140,6 @@ public class KeepAlive extends AbstractConnectionService {
           }else {\r
             if (is_login_send_success) {\r
               connection.send(protocolAPIHelper.getHeartbeatMSG(mRuntime));\r
-              new Handler().postDelayed(new Runnable() {\r
-                @Override\r
-                public void run() {\r
-                  connection.send(protocolAPIHelper.getBindingMSG(mRuntime));\r
-\r
-                  if (Config.protocol_no==Config.PROTOCOL_FZD){\r
-                    new Handler().postDelayed(new Runnable() {\r
-                      @Override\r
-                      public void run() {\r
-                        connection.send(protocolAPIHelper.getSyncTimeMSG(mRuntime));\r
-                      }\r
-                    },1000);\r
-                  }\r
-                }\r
-              },1000);\r
-\r
-\r
             } else {\r
               connection.send(protocolAPIHelper.getLoginMSG(mRuntime));\r
             }\r
@@ -156,6 +155,8 @@ public class KeepAlive extends AbstractConnectionService {
     }\r
   }\r
 \r
+\r
+\r
   public void stopResponseCheckTimer(){\r
     if (scheduled !=null){\r
       scheduled.shutdownNow();\r
@@ -284,13 +285,13 @@ public class KeepAlive extends AbstractConnectionService {
     ICLogger.i("Update IMEI "+ret);\r
     //发送登录包\r
     is_login_send_success=false;\r
-      new Handler().postDelayed(new Runnable() {\r
-        @Override\r
-        public void run() {\r
-          connection.send(protocolAPIHelper.getLoginMSG(paramRuntime));\r
-        }\r
-      },500);\r
-      isConnected = true;\r
+\r
+    isConnected = true;\r
+\r
+    Util.mSleep(1000);\r
+\r
+    connection.send(protocolAPIHelper.getLoginMSG(paramRuntime));\r
+\r
 //    this.firstReConnected = true;\r
 //    this.idleTimeMillis = SystemClock.elapsedRealtime();\r
 \r
@@ -315,21 +316,6 @@ public class KeepAlive extends AbstractConnectionService {
     //发送心跳包\r
     connection.send(protocolAPIHelper.getHeartbeatMSG(paramRuntime));\r
         //发送完心跳后,开始检查服务器响应\r
-//    new Handler().postDelayed(new Runnable() {\r
-//      @Override\r
-//      public void run() {\r
-//        connection.send(protocolAPIHelper.getBindingMSG(mRuntime));\r
-//      }\r
-//    },1000);\r
-//\r
-//    if (Config.protocol_no==Config.PROTOCOL_FZD){\r
-//      new Handler().postDelayed(new Runnable() {\r
-//        @Override\r
-//        public void run() {\r
-//          connection.send(protocolAPIHelper.getSyncTimeMSG(mRuntime));\r
-//        }\r
-//      },2000);\r
-//    }\r
     startResponseCheckTimer();\r
 \r
 \r
@@ -348,6 +334,9 @@ public class KeepAlive extends AbstractConnectionService {
 //      LauncherCtrl.getInstance(this.mContext).setStatusBarIcon("server_connected", STATUS_BAR_STATE_SERVER_CONNECTED_ON);\r
 //      Deliver.triggerSendThread(); //链接上就尝试清除 buffer中的数据\r
 \r
+      //心跳结束后执行\r
+      mHandler.post(msendMsgAfterHeartbeat);\r
+\r
       if (CoreService.needLocateInAfterHeartBeat==true){\r
         //第一次启动或者系统Close后重连的时候,重置LocationCycle\r
         CoreService.needLocateInAfterHeartBeat=false;\r
@@ -367,31 +356,14 @@ public class KeepAlive extends AbstractConnectionService {
 \r
       paramRuntime.lastLoginSuccessTime=System.currentTimeMillis();\r
       //发送心跳包\r
-      new Handler().postDelayed(new Runnable() {\r
-        @Override\r
-        public void run() {\r
-          //这时重新连接服务器才进行的连接,理论上close已经设置false,此次可以认为协议定然断开,所以设置为false作为双重保险。\r
-          mRuntime.setServerProtocolConnected(false);\r
-          connection.send(protocolAPIHelper.getHeartbeatMSG(paramRuntime));\r
-          //发送完心跳后,开始检查服务器响应\r
-          new Handler().postDelayed(new Runnable() {\r
-            @Override\r
-            public void run() {\r
-              connection.send(protocolAPIHelper.getBindingMSG(mRuntime));\r
-              if (Config.protocol_no==Config.PROTOCOL_FZD){\r
-                new Handler().postDelayed(new Runnable() {\r
-                  @Override\r
-                  public void run() {\r
-                    connection.send(protocolAPIHelper.getSyncTimeMSG(mRuntime));\r
-                  }\r
-                },1000);\r
-              }\r
-            }\r
-          },1000);\r
 \r
-          startResponseCheckTimer();\r
-        }\r
-      },3500);\r
+      //这时重新连接服务器才进行的连接,理论上close已经设置false,此次可以认为协议定然断开,所以设置为false作为双重保险。\r
+      mRuntime.setServerProtocolConnected(false);\r
+      connection.send(protocolAPIHelper.getHeartbeatMSG(paramRuntime));\r
+      //发送完心跳后,开始检查服务器响应\r
+\r
+      startResponseCheckTimer();\r
+\r
 \r
     }\r
     return false;\r
index 68d7ec7..78f6686 100644 (file)
@@ -130,9 +130,7 @@ public class toolActivity extends Activity {
                     Util.ShowToast(CoreService.getInstance().runtime, "Stop ProtocolService!");\r
                     stopService(new Intent(toolActivity.this, CoreService.class));// protocol service\r
 \r
-                    try{\r
-                        Thread.sleep(3000);\r
-                    }catch (Exception e ){}\r
+                Util.mSleep(3000);\r
                 if (CoreService.getInstance()!=null)\r
                      Util.ShowToast(CoreService.getInstance().runtime, "Start ProtocolService!");\r
                     startService(new Intent(toolActivity.this, CoreService.class));// protocol service\r
index f53fd02..6b10f6e 100644 (file)
@@ -210,7 +210,7 @@ public class CameraUtil implements SurfaceTexture.OnFrameAvailableListener {
               public void run() {\r
                 try {\r
                   CameraUtil.this.mCamera.takePicture(CameraUtil.this.shutterCallback, null, CameraUtil.this.jpegCallback);\r
-                  Thread.sleep(5000L);\r
+                  Util.mSleep(5000);\r
                   return;\r
                 } catch (Exception exception) {\r
                   exception.printStackTrace();\r
index c279b07..b1a9456 100644 (file)
@@ -378,11 +378,7 @@ public class ContextProxy {
             WakeLockUtil.ScreenOnWakeLockTemperary(_context);\r
             play_waning_notify(_context);\r
             VibrateUtil.getInstance(_context).VibrateOnOnce(true);\r
-            try {\r
-              Thread.sleep(2000);\r
-            } catch (InterruptedException e) {\r
-              e.printStackTrace();\r
-            }\r
+            Util.mSleep(2000);\r
           }\r
           Intent intent = new Intent(ActionSrvPushTxt);\r
           intent.putExtra("msgType", msgType); //0 代表 server下发消息,1代表 SMS消息\r
@@ -405,11 +401,7 @@ public class ContextProxy {
             WakeLockUtil.ScreenOnWakeLockTemperary(_context);\r
             play_waning_notify(_context);\r
             VibrateUtil.getInstance(_context).VibrateOnOnce(true);\r
-            try {\r
-              Thread.sleep(2000);\r
-            } catch (InterruptedException e) {\r
-              e.printStackTrace();\r
-            }\r
+            Util.mSleep(2000);\r
           }\r
           Intent intent = new Intent(ActionSrvPushTxt);\r
           intent.putExtra("msgType", msgType); //0 代表 server下发消息,1代表 SMS消息,2代表有提示音的消息\r
@@ -433,11 +425,7 @@ public class ContextProxy {
             WakeLockUtil.ScreenOnWakeLockTemperary(_context);\r
             play_waning_notify(_context);\r
             VibrateUtil.getInstance(_context).VibrateOnOnce(true);\r
-            try {\r
-              Thread.sleep(2000);\r
-            } catch (InterruptedException e) {\r
-              e.printStackTrace();\r
-            }\r
+            Util.mSleep(2000);\r
           }\r
 \r
           Intent intent = new Intent(ActionSrvPushTxt);\r
index 20e6db9..2716386 100644 (file)
@@ -185,11 +185,7 @@ public class DnsUtil  {
         };\r
         runTask(temp, call);\r
         String ip;\r
-        try {\r
-            Thread.sleep(500L);\r
-        } catch (InterruptedException e) {\r
-            e.printStackTrace();\r
-        }\r
+        Util.mSleep(500);\r
 //        ICLogger.i(temp.toString());\r
         if (temp.domainIp!=null){\r
             if (temp.hostIp!=null){\r
index 162197a..3227790 100644 (file)
@@ -295,10 +295,7 @@ public class ProcessReceiver extends BroadcastReceiver {
             //开启测温\r
             TemperatureUtil.DoTempTest();\r
 \r
-            try {\r
-              Thread.sleep(5000);\r
-            } catch (Exception e) {\r
-            }\r
+            Util.mSleep(5000);\r
             //开启测量PPG\r
             HeartRateManager.triggerPPGtest();\r
           }\r
@@ -349,10 +346,7 @@ public class ProcessReceiver extends BroadcastReceiver {
             //开启测温\r
             TemperatureUtil.DoTempTest();\r
 \r
-            try {\r
-              Thread.sleep(5000);\r
-            } catch (Exception e) {\r
-            }\r
+            Util.mSleep(500);\r
             //开启测量PPG\r
             HeartRateManager.triggerPPGtest();\r
           }\r
index 6fa1083..2fea9de 100644 (file)
@@ -75,22 +75,13 @@ public class TemperatureUtil {
         if (ICJniUtils.isTemperatureDevAvailable() >ICJniUtils.TempSensorType.TEMPSENSOR_TYPE_NONE.ordinal()) {\r
 \r
             ICJniUtils.enableTemperature();\r
-            try {\r
-                Thread.sleep(1000);\r
-            } catch (InterruptedException e) {\r
-                e.printStackTrace();\r
-            }\r
-\r
+            Util.mSleep(1000);\r
 \r
             double wrist_temp, body_temp;\r
 \r
             wrist_temp = TemperatureUtil.get_temp_value_adjusted();\r
             if(wrist_temp< 0.001f){\r
-                try {\r
-                    Thread.sleep(1000);\r
-                } catch (InterruptedException e) {\r
-                    e.printStackTrace();\r
-                }\r
+                Util.mSleep(1000);\r
                 ICLogger.i("retry read temp for 0");\r
                 wrist_temp = TemperatureUtil.get_temp_value_adjusted();\r
             }\r
index 658bde1..5fc111a 100644 (file)
@@ -68,6 +68,11 @@ public class Util {
   private static String FT6236U_upgrade_dev="/sys/devices/platform/soc/soc:ap-apb/70800000.i2c/i2c-3/3-0038/ftsfwupdate";\r
   private static String FT6236U_getver_dev="/sys/devices/platform/soc/soc:ap-apb/70800000.i2c/i2c-3/3-0038/ftstpfwver";\r
 \r
+  public static void mSleep(int ms){\r
+    try {\r
+      Thread.sleep(ms);\r
+    }catch ( Exception e){}\r
+  }\r
 \r
   public static boolean is_FT6236U_upgrade_firmware_support(){\r
     boolean ret=getSystemProperties("product.tp.upgradeable").toLowerCase().equals("true");\r