diff options
author | Ivo van Dongen <info@ivovandongen.nl> | 2017-02-16 16:16:47 +0200 |
---|---|---|
committer | Ivo van Dongen <ivovandongen@users.noreply.github.com> | 2017-02-24 17:54:20 +0200 |
commit | 465c949153a838bb3159204ab268eb551fbd2e6c (patch) | |
tree | 250922b879261580b1252a78b461218be9012bc0 /platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineRegion.java | |
parent | 7d9018093a61d327fa7ca1312845d2a00d928380 (diff) | |
download | qtlocation-mapboxgl-465c949153a838bb3159204ab268eb551fbd2e6c.tar.gz |
[android] jni high level binding refactor
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 | 81 |
1 files changed, 36 insertions, 45 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 a4d8a646d3..a55e8dd848 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 @@ -5,7 +5,7 @@ import android.os.Looper; import android.support.annotation.IntDef; import android.support.annotation.NonNull; -import timber.log.Timber; +import com.mapbox.mapboxsdk.storage.FileSource; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -25,22 +25,25 @@ public class OfflineRegion { System.loadLibrary("mapbox-gl"); } - // Parent OfflineManager - private OfflineManager offlineManager; - // Members - private long mId = 0; - private OfflineRegionDefinition mDefinition = null; + + // Holds the pointer to JNI OfflineRegion + private long nativePtr; + + // Holds a reference to the FileSource to keep it alive + private FileSource fileSource; + + //Region id + private long id; + + private OfflineRegionDefinition definition; /** * Arbitrary binary region metadata. The contents are opaque to the SDK implementation; * it just stores and retrieves a byte[]. Check the `OfflineActivity` in the TestApp * for a sample implementation that uses JSON to store an offline region name. */ - private byte[] mMetadata = null; - - // Holds the pointer to JNI OfflineRegion - private long mOfflineRegionPtr = 0; + private byte[] metadata; // Makes sure callbacks come back to the main thread private Handler handler; @@ -197,19 +200,22 @@ public class OfflineRegion { if (state == STATE_ACTIVE) { return true; } - if (isDeliveringInactiveMessages()) { - return true; - } - return false; + return isDeliveringInactiveMessages(); } - /* + /** * Constructor + * + * For JNI use only, to create a new offline region, use + * {@link OfflineManager#createOfflineRegion} instead. */ - - private OfflineRegion() { - // For JNI use only, to create a new offline region, use - // OfflineManager.createOfflineRegion() instead. + private OfflineRegion(long offlineRegionPtr, FileSource fileSource, long id, + OfflineRegionDefinition definition, byte[] metadata) { + this.fileSource = fileSource; + this.id = id; + this.definition = definition; + this.metadata = metadata; + initialize(offlineRegionPtr, fileSource); } /* @@ -217,15 +223,15 @@ public class OfflineRegion { */ public long getID() { - return mId; + return id; } public OfflineRegionDefinition getDefinition() { - return mDefinition; + return definition; } public byte[] getMetadata() { - return mMetadata; + return metadata; } private Handler getHandler() { @@ -383,7 +389,7 @@ public class OfflineRegion { getHandler().post(new Runnable() { @Override public void run() { - mMetadata = metadata; + OfflineRegion.this.metadata = metadata; callback.onUpdate(metadata); } }); @@ -401,33 +407,18 @@ public class OfflineRegion { }); } - @Override - protected void finalize() { - try { - super.finalize(); - destroyOfflineRegion(); - } catch (Throwable throwable) { - Timber.e("Failed to finalize OfflineRegion: " + throwable.getMessage()); - } - } - - /* - * Native methods - */ + private native void initialize(long offlineRegionPtr, FileSource fileSource); - private native void destroyOfflineRegion(); + @Override + protected native void finalize(); - private native void setOfflineRegionObserver( - OfflineRegionObserver observerCallback); + private native void setOfflineRegionObserver(OfflineRegionObserver callback); - private native void setOfflineRegionDownloadState( - @DownloadState int offlineRegionDownloadState); + private native void setOfflineRegionDownloadState(@DownloadState int offlineRegionDownloadState); - private native void getOfflineRegionStatus( - OfflineRegionStatusCallback statusCallback); + private native void getOfflineRegionStatus(OfflineRegionStatusCallback callback); - private native void deleteOfflineRegion( - OfflineRegionDeleteCallback deleteCallback); + private native void deleteOfflineRegion(OfflineRegionDeleteCallback callback); private native void updateOfflineRegionMetadata(byte[] metadata, OfflineRegionUpdateMetadataCallback callback); |