From 8dcb91b5d7ca611f7542b98e65e17dd089604551 Mon Sep 17 00:00:00 2001 From: gallonyin Date: Mon, 4 Sep 2023 00:34:14 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E5=8F=AF=E9=80=89=E4=B8=8D=E5=8E=BB?= =?UTF-8?q?=E9=87=8D=E6=8C=87=E4=BB=A4=E6=A8=A1=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/org/yameida/worktool/Constant.kt | 5 +++++ app/src/main/java/org/yameida/worktool/service/MyLooper.kt | 7 +++++-- 2 files changed, 10 insertions(+), 2 deletions(-) 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 {