diff --git a/plugin-offline/CHANGELOG.md b/plugin-offline/CHANGELOG.md index 6c70241a..14fc9492 100644 --- a/plugin-offline/CHANGELOG.md +++ b/plugin-offline/CHANGELOG.md @@ -2,6 +2,9 @@ Mapbox welcomes participation and contributions from everyone. +### mapbox-android-plugin-offline-v9:0.10.0 - August 24, 2021 +- Add throttle for offline plugin notification update [#1200](https://github.com/mapbox/mapbox-plugins-android/pull/1200) + ### mapbox-android-plugin-offline-v9:0.9.0 - August 18, 2021 - Update compatibility for Android 12 [#1194](https://github.com/mapbox/mapbox-plugins-android/pull/1194) - Bump maps sdk to 9.6.2 [#1194](https://github.com/mapbox/mapbox-plugins-android/pull/1194) diff --git a/plugin-offline/gradle.properties b/plugin-offline/gradle.properties index ee46b68d..88217e67 100644 --- a/plugin-offline/gradle.properties +++ b/plugin-offline/gradle.properties @@ -1,4 +1,4 @@ -VERSION_NAME=0.9.0-SNAPSHOT +VERSION_NAME=0.10.0-SNAPSHOT POM_ARTIFACT_ID=mapbox-android-plugin-offline-v9 POM_NAME=Mapbox Android Offline Plugin POM_DESCRIPTION=Mapbox Android Offline Plugin diff --git a/plugin-offline/src/main/java/com/mapbox/mapboxsdk/plugins/offline/offline/OfflineDownloadService.java b/plugin-offline/src/main/java/com/mapbox/mapboxsdk/plugins/offline/offline/OfflineDownloadService.java index 39dc34b8..52e1d57b 100644 --- a/plugin-offline/src/main/java/com/mapbox/mapboxsdk/plugins/offline/offline/OfflineDownloadService.java +++ b/plugin-offline/src/main/java/com/mapbox/mapboxsdk/plugins/offline/offline/OfflineDownloadService.java @@ -52,6 +52,7 @@ public class OfflineDownloadService extends Service { // map offline regions to requests, ids are received with onStartCommand, these match serviceId // in OfflineDownloadOptions final LongSparseArray regionLongSparseArray = new LongSparseArray<>(); + final LongSparseArray regionProgressSparseArray = new LongSparseArray<>(); @Override public void onCreate() { @@ -130,7 +131,7 @@ public void onCreate(OfflineRegion offlineRegion) { = offlineDownload.toBuilder().uuid(offlineRegion.getID()).build(); OfflineDownloadStateReceiver.dispatchStartBroadcast(getApplicationContext(), options); regionLongSparseArray.put(options.uuid(), offlineRegion); - + regionProgressSparseArray.put(options.uuid(), 0); launchDownload(options, offlineRegion); showNotification(options); } @@ -209,6 +210,7 @@ private synchronized void removeOfflineRegion(int regionId) { notificationManager.cancel(regionId); } regionLongSparseArray.remove(regionId); + regionProgressSparseArray.remove(regionId); if (regionLongSparseArray.size() == 0) { stopForeground(true); } @@ -266,11 +268,15 @@ void progressDownload(OfflineDownloadOptions offlineDownload, OfflineRegionStatu offlineDownload = offlineDownload.toBuilder().progress(percentage).build(); - if (percentage % 2 == 0 && regionLongSparseArray.get(offlineDownload.uuid().intValue()) != null) { + int uuid = offlineDownload.uuid().intValue(); + Integer lastPercent = regionProgressSparseArray.get(uuid); + if (percentage % 2 == 0 && regionLongSparseArray.get(uuid) != null + && lastPercent != null && percentage != lastPercent) { + regionProgressSparseArray.put(uuid, percentage); OfflineDownloadStateReceiver.dispatchProgressChanged(this, offlineDownload, percentage); if (notificationBuilder != null) { notificationBuilder.setProgress(100, percentage, false); - notificationManager.notify(offlineDownload.uuid().intValue(), notificationBuilder.build()); + notificationManager.notify(uuid, notificationBuilder.build()); } } }