diff --git a/app/src/main/java/org/yameida/worktool/Constant.kt b/app/src/main/java/org/yameida/worktool/Constant.kt index a505034..112a33a 100644 --- a/app/src/main/java/org/yameida/worktool/Constant.kt +++ b/app/src/main/java/org/yameida/worktool/Constant.kt @@ -104,6 +104,11 @@ object Constant { var oldDevice: Boolean get() = SPUtils.getInstance().getBoolean("oldDevice", false) set(value) = SPUtils.getInstance().put("oldDevice", value) + var duplicationFilter: Boolean + get() = SPUtils.getInstance().getBoolean("apiDuplicationFilter", true) + set(value) { + SPUtils.getInstance().put("apiDuplicationFilter", value) + } fun getWsUrl() = "$host/webserver/wework/$robotId" diff --git a/app/src/main/java/org/yameida/worktool/service/MyLooper.kt b/app/src/main/java/org/yameida/worktool/service/MyLooper.kt index 2b2f6d8..ab65dfc 100644 --- a/app/src/main/java/org/yameida/worktool/service/MyLooper.kt +++ b/app/src/main/java/org/yameida/worktool/service/MyLooper.kt @@ -100,15 +100,18 @@ object MyLooper { object : TypeToken>() {}.type ) } + val list = if (Constant.duplicationFilter) LinkedHashSet(messageList.list).toList() else messageList.list //去重处理 丢弃之前的重复指令 丢弃之前的获取新消息指令 - for (message in LinkedHashSet(messageList.list)) { + for (message in list) { if (message.type == WeworkMessageBean.LOOP_RECEIVE_NEW_MESSAGE) { WeworkController.enableLoopRunning = true } else { WeworkController.mainLoopRunning = false LogUtils.v("加入指令到执行队列", if (message.fileBase64.isNullOrEmpty()) GsonUtils.toJson(message) else message.type) val messageWhat = message.type * message.hashCode() / 1000 + text.length - getInstance().removeMessages(messageWhat) + if (Constant.duplicationFilter) { + getInstance().removeMessages(messageWhat) + } getInstance().sendMessage(Message.obtain().apply { what = messageWhat obj = message.apply {