= new RemoteCallbackList<>();
private boolean isOxygenOrHeartRateStop = false;
+ private boolean hasServerRequest = false;
private final IHeartRateSensorService.Stub heartRateSensorService =
new IHeartRateSensorService.Stub() {
@Override
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);
}
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);
}
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);
}
//判断当前的任务是啥?如果是心率或者血氧的,并且是来自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;
}
e.printStackTrace();
} finally {
heartRateCallbacks.finishBroadcast();
+ //处理完了就可以了,重置状态
+ hasServerRequest = false;
}
}
}