summaryrefslogtreecommitdiff
path: root/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineManager.java
diff options
context:
space:
mode:
authorGuardiola31337 <pablo.guardiola@mapbox.com>2019-05-03 12:25:47 -0400
committerGuardiola31337 <pablo.guardiola@mapbox.com>2019-05-03 12:40:33 -0400
commit4557f254fa6bbe08f8a750a4c140c133fdcad362 (patch)
treeb3e1a7e6cbba859b2cb52b1df15d3a318df4f637 /platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineManager.java
parente69efb996d32c86f00b08878a61c6f0a47c81932 (diff)
downloadqtlocation-mapboxgl-4557f254fa6bbe08f8a750a4c140c133fdcad362.tar.gz
[android] fix offline callbacks not being fired off
Co-authored-by: Dan Nesfeder <dan.nesfeder@mapbox.com>
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineManager.java')
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineManager.java31
1 files changed, 16 insertions, 15 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineManager.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineManager.java
index 8684d7c6f1..5808411d43 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineManager.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineManager.java
@@ -225,7 +225,8 @@ public class OfflineManager {
*/
public void mergeOfflineRegions(@NonNull String path, @NonNull final MergeOfflineRegionsCallback callback) {
final File src = new File(path);
- new FileUtils.CheckFileReadPermissionTask(new FileUtils.OnCheckFileReadPermissionListener() {
+ final FileUtils.OnCheckFileReadPermissionListener fileReadPermissionListener =
+ new FileUtils.OnCheckFileReadPermissionListener() {
@Override
public void onReadPermissionGranted() {
new FileUtils.CheckFileWritePermissionTask(new FileUtils.OnCheckFileWritePermissionListener() {
@@ -250,18 +251,19 @@ public class OfflineManager {
// path not readable, abort
callback.onError("Secondary database needs to be located in a readable path.");
}
- }).execute(src);
+ };
+ new FileUtils.CheckFileReadPermissionTask(fileReadPermissionListener).execute(src);
}
private static final class CopyTempDatabaseFileTask extends AsyncTask<Object, Void, Object> {
@NonNull
private final WeakReference<OfflineManager> offlineManagerWeakReference;
@NonNull
- private final WeakReference<MergeOfflineRegionsCallback> callbackWeakReference;
+ private MergeOfflineRegionsCallback callback;
CopyTempDatabaseFileTask(OfflineManager offlineManager, MergeOfflineRegionsCallback callback) {
this.offlineManagerWeakReference = new WeakReference<>(offlineManager);
- this.callbackWeakReference = new WeakReference<>(callback);
+ this.callback = callback;
}
@Override
@@ -279,17 +281,16 @@ public class OfflineManager {
@Override
protected void onPostExecute(Object object) {
- MergeOfflineRegionsCallback callback = callbackWeakReference.get();
- if (callback != null) {
- OfflineManager offlineManager = offlineManagerWeakReference.get();
- if (object instanceof File && offlineManager != null) {
- // successfully copied the file, perform merge
- File dst = (File) object;
- offlineManager.mergeOfflineDatabaseFiles(dst, callback, true);
- } else if (object instanceof String) {
- // error occurred
- callback.onError((String) object);
- }
+ MergeOfflineRegionsCallback localCallback = callback;
+ callback = null;
+ OfflineManager offlineManager = offlineManagerWeakReference.get();
+ if (object instanceof File && offlineManager != null) {
+ // successfully copied the file, perform merge
+ File dst = (File) object;
+ offlineManager.mergeOfflineDatabaseFiles(dst, localCallback, true);
+ } else if (object instanceof String) {
+ // error occurred
+ localCallback.onError((String) object);
}
}
}