From 999d3e325218b0c4f0ae1054a02fabbc6bf0d6f9 Mon Sep 17 00:00:00 2001 From: cpfeiffer Date: Sun, 25 Dec 2016 23:26:44 +0100 Subject: [PATCH] Mi1: Attempt at throttling notifications during sync #438 --- .../miband/operations/FetchActivityOperation.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband/operations/FetchActivityOperation.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband/operations/FetchActivityOperation.java index ab4fd5d6..01950313 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband/operations/FetchActivityOperation.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband/operations/FetchActivityOperation.java @@ -55,6 +55,7 @@ public class FetchActivityOperation extends AbstractMiBand1Operation { private final boolean hasExtendedActivityData; private static class ActivityStruct { + private int lastNotifiedProgress; private final byte[] activityDataHolder; private final int activityDataHolderSize; //index of the buffer above @@ -129,6 +130,7 @@ public class FetchActivityOperation extends AbstractMiBand1Operation { public void bufferFlushed(int minutes) { activityDataTimestampProgress.add(Calendar.MINUTE, minutes); activityDataHolderProgress = 0; + lastNotifiedProgress = 0; } } @@ -199,9 +201,16 @@ public class FetchActivityOperation extends AbstractMiBand1Operation { } else { bufferActivityData(value); } - LOG.debug("activity data: length: " + value.length + ", remaining bytes: " + activityStruct.activityDataRemainingBytes); + if (LOG.isDebugEnabled()) { + LOG.debug("activity data: length: " + value.length + ", remaining bytes: " + activityStruct.activityDataRemainingBytes); + } - GB.updateTransferNotification(getContext().getString(R.string.busy_task_fetch_activity_data), true, (int) (((float) (activityStruct.activityDataUntilNextHeader - activityStruct.activityDataRemainingBytes)) / activityStruct.activityDataUntilNextHeader * 100), getContext()); + int progress = (int) (((float) (activityStruct.activityDataUntilNextHeader - activityStruct.activityDataRemainingBytes)) / activityStruct.activityDataUntilNextHeader * 100); + // avoid too many notifications overloading the system + if (progress - activityStruct.lastNotifiedProgress >= 8) { + activityStruct.lastNotifiedProgress = progress; + GB.updateTransferNotification(getContext().getString(R.string.busy_task_fetch_activity_data), true, progress, getContext()); + } if (activityStruct.isBlockFinished()) { sendAckDataTransfer(activityStruct.activityDataTimestampToAck, activityStruct.activityDataUntilNextHeader);