diff options
author | tobrun <tobrun.van.nuland@gmail.com> | 2019-06-19 14:01:45 +0200 |
---|---|---|
committer | Tobrun <tobrun.van.nuland@gmail.com> | 2019-07-02 14:23:24 +0200 |
commit | 21f75229675a07093689d542f116066c7af59ce4 (patch) | |
tree | a7b2964db16c6783409b67786b18b1f11336d1a1 /platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineRegion.java | |
parent | e611e572715bc995fa49774fbe6ffbf0dde79f9d (diff) | |
download | qtlocation-mapboxgl-21f75229675a07093689d542f116066c7af59ce4.tar.gz |
[android] - add binding integration for cache management API
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineRegion.java')
-rw-r--r-- | platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineRegion.java | 75 |
1 files changed, 68 insertions, 7 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineRegion.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineRegion.java index 863219854b..2217850a2e 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineRegion.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineRegion.java @@ -7,7 +7,6 @@ import android.support.annotation.IntDef; import android.support.annotation.Keep; import android.support.annotation.NonNull; import android.support.annotation.Nullable; - import com.mapbox.mapboxsdk.LibraryLoader; import com.mapbox.mapboxsdk.Mapbox; import com.mapbox.mapboxsdk.net.ConnectivityReceiver; @@ -148,6 +147,25 @@ public class OfflineRegion { } /** + * This callback receives an asynchronous response containing a notification when + * an offline region has been invalidated, or a {@link String} error message otherwise. + */ + @Keep + public interface OfflineRegionInvalidateCallback { + /** + * Receives the invalidate notification + */ + void onInvalidate(); + + /** + * Receives the error message + * + * @param error the error message + */ + void onError(String error); + } + + /** * This callback receives an asynchronous response containing the newly update * OfflineMetadata in the database, or an error message otherwise. */ @@ -337,14 +355,14 @@ public class OfflineRegion { * @param callback the callback to invoked. */ public void getStatus(@NonNull final OfflineRegionStatusCallback callback) { - FileSource.getInstance(Mapbox.getApplicationContext()).activate(); + fileSource.activate(); getOfflineRegionStatus(new OfflineRegionStatusCallback() { @Override public void onStatus(final OfflineRegionStatus status) { handler.post(new Runnable() { @Override public void run() { - FileSource.getInstance(Mapbox.getApplicationContext()).deactivate(); + fileSource.deactivate(); callback.onStatus(status); } }); @@ -355,7 +373,7 @@ public class OfflineRegion { handler.post(new Runnable() { @Override public void run() { - FileSource.getInstance(Mapbox.getApplicationContext()).deactivate(); + fileSource.deactivate(); callback.onError(error); } }); @@ -383,14 +401,14 @@ public class OfflineRegion { public void delete(@NonNull final OfflineRegionDeleteCallback callback) { if (!isDeleted) { isDeleted = true; - FileSource.getInstance(Mapbox.getApplicationContext()).activate(); + fileSource.activate(); deleteOfflineRegion(new OfflineRegionDeleteCallback() { @Override public void onDelete() { handler.post(new Runnable() { @Override public void run() { - FileSource.getInstance(Mapbox.getApplicationContext()).deactivate(); + fileSource.deactivate(); callback.onDelete(); OfflineRegion.this.finalize(); } @@ -403,7 +421,7 @@ public class OfflineRegion { @Override public void run() { isDeleted = false; - FileSource.getInstance(Mapbox.getApplicationContext()).deactivate(); + fileSource.deactivate(); callback.onError(error); } }); @@ -413,6 +431,46 @@ public class OfflineRegion { } /** + * Invalidate all the tiles from an offline region forcing Mapbox GL to revalidate + * the tiles with the server before using. This is more efficient than deleting the + * offline region and downloading it again because if the data on the cache matches + * the server, no new data gets transmitted. + * + * @param callback the callback to be invoked + */ + public void invalidate(@Nullable final OfflineRegionInvalidateCallback callback) { + fileSource.activate(); + invalidateOfflineRegion(new OfflineRegionInvalidateCallback() { + + @Override + public void onInvalidate() { + handler.post(new Runnable() { + @Override + public void run() { + fileSource.deactivate(); + if (callback != null) { + callback.onInvalidate(); + } + } + }); + } + + @Override + public void onError(@NonNull final String message) { + handler.post(new Runnable() { + @Override + public void run() { + fileSource.deactivate(); + if (callback != null) { + callback.onError(message); + } + } + }); + } + }); + } + + /** * Update an offline region metadata from the database. * <p> * When the operation is complete or encounters an error, the given callback will be @@ -469,4 +527,7 @@ public class OfflineRegion { @Keep private native void updateOfflineRegionMetadata(byte[] metadata, OfflineRegionUpdateMetadataCallback callback); + @Keep + private native void invalidateOfflineRegion(OfflineRegionInvalidateCallback callback); + } |