handler stop in server test.
authorTrillGates <williamtrillgates@gmail.com>
Mon, 21 Jun 2021 12:47:29 +0000 (20:47 +0800)
committerTrillGates <williamtrillgates@gmail.com>
Mon, 21 Jun 2021 12:47:29 +0000 (20:47 +0800)
app/src/main/java/com/ic/work/SensorDataService.java

index 638e8ee..b3effd9 100644 (file)
@@ -337,6 +337,7 @@ public class SensorDataService extends Service implements TemperatureHelper.Temp
             = new RemoteCallbackList<>();
 
     private boolean isOxygenOrHeartRateStop = false;
+    private boolean hasServerRequest = false;
     private final IHeartRateSensorService.Stub heartRateSensorService =
             new IHeartRateSensorService.Stub() {
                 @Override
@@ -356,6 +357,9 @@ public class SensorDataService extends Service implements TemperatureHelper.Temp
                     isOxygenOrHeartRateStop = false;
                     jxHeartRateMode = 2;
                     IcLog.d(TAG, "getHeartRateInfo..." + from + " tag == > " + tag);
+                    if (from == TestTaskEvent.From.SERVER_CMD.getValue()) {
+                        hasServerRequest = true;
+                    }
                     createTask(from, TestTaskEvent.SensorType.HEART_RATE_AND_OXYGEN, tag);
                 }
 
@@ -364,6 +368,9 @@ public class SensorDataService extends Service implements TemperatureHelper.Temp
                     isOxygenOrHeartRateStop = false;
                     //只获取血氧
                     IcLog.d(TAG, "getJustOxygenInfo..." + from + " tag == > " + callbackTag);
+                    if (from == TestTaskEvent.From.SERVER_CMD.getValue()) {
+                        hasServerRequest = true;
+                    }
                     createTask(from, TestTaskEvent.SensorType.JUST_OXYGEN, callbackTag);
                 }
 
@@ -371,6 +378,9 @@ public class SensorDataService extends Service implements TemperatureHelper.Temp
                 public void getJustHeartRateInfo(int from, String callbackTag) {
                     isOxygenOrHeartRateStop = false;
                     //只获取心率
+                    if (from == TestTaskEvent.From.SERVER_CMD.getValue()) {
+                        hasServerRequest = true;
+                    }
                     IcLog.d(TAG, "getJustHeartRateInfo..." + from + " tag == > " + callbackTag);
                     createTask(from, TestTaskEvent.SensorType.JUST_HEART_RATE, callbackTag);
                 }
@@ -381,7 +391,9 @@ public class SensorDataService extends Service implements TemperatureHelper.Temp
                     //判断当前的任务是啥?如果是心率或者血氧的,并且是来自UI的测试,那么就停止
                     //如果是来自后台的不会停止
                     //如果队列里的任务是来自UI的心率/血氧,移除任务
-                    if (from == TestTaskEvent.From.CLIENT_CMD.getValue()) {
+                    //判断是否有来自于后台的请求
+                    ICLogger.d("from == > " + from + " hasServerRequest == > " + hasServerRequest);
+                    if (from == TestTaskEvent.From.CLIENT_CMD.getValue() && !hasServerRequest) {
                         BloodInfoHelper.getInstance().stopTest();
                         isOxygenOrHeartRateStop = true;
                     }
@@ -681,6 +693,8 @@ public class SensorDataService extends Service implements TemperatureHelper.Temp
                 e.printStackTrace();
             } finally {
                 heartRateCallbacks.finishBroadcast();
+                //处理完了就可以了,重置状态
+                hasServerRequest = false;
             }
         }
     }