summaryrefslogtreecommitdiff
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
parente69efb996d32c86f00b08878a61c6f0a47c81932 (diff)
downloadqtlocation-mapboxgl-4557f254fa6bbe08f8a750a4c140c133fdcad362.tar.gz
[android] fix offline callbacks not being fired off
Co-authored-by: Dan Nesfeder <dan.nesfeder@mapbox.com>
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineManager.java31
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/utils/FileUtils.java49
2 files changed, 38 insertions, 42 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);
}
}
}
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/utils/FileUtils.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/utils/FileUtils.java
index 500e784602..95509b670c 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/utils/FileUtils.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/utils/FileUtils.java
@@ -6,7 +6,6 @@ import android.support.annotation.NonNull;
import com.mapbox.mapboxsdk.log.Logger;
import java.io.File;
-import java.lang.ref.WeakReference;
public class FileUtils {
@@ -17,10 +16,10 @@ public class FileUtils {
*/
public static class CheckFileReadPermissionTask extends AsyncTask<File, Void, Boolean> {
@NonNull
- private final WeakReference<OnCheckFileReadPermissionListener> listenerWeakReference;
+ private OnCheckFileReadPermissionListener listener;
public CheckFileReadPermissionTask(OnCheckFileReadPermissionListener listener) {
- this.listenerWeakReference = new WeakReference<>(listener);
+ this.listener = listener;
}
@Override
@@ -34,21 +33,19 @@ public class FileUtils {
@Override
protected void onCancelled() {
- OnCheckFileReadPermissionListener listener = listenerWeakReference.get();
- if (listener != null) {
- listener.onError();
- }
+ OnCheckFileReadPermissionListener localListener = listener;
+ listener = null;
+ localListener.onError();
}
@Override
protected void onPostExecute(Boolean result) {
- OnCheckFileReadPermissionListener listener = listenerWeakReference.get();
- if (listener != null) {
- if (result) {
- listener.onReadPermissionGranted();
- } else {
- listener.onError();
- }
+ OnCheckFileReadPermissionListener localListener = listener;
+ listener = null;
+ if (result) {
+ localListener.onReadPermissionGranted();
+ } else {
+ localListener.onError();
}
}
}
@@ -74,10 +71,10 @@ public class FileUtils {
*/
public static class CheckFileWritePermissionTask extends AsyncTask<File, Void, Boolean> {
@NonNull
- private final WeakReference<OnCheckFileWritePermissionListener> listenerWeakReference;
+ private OnCheckFileWritePermissionListener listener;
public CheckFileWritePermissionTask(OnCheckFileWritePermissionListener listener) {
- this.listenerWeakReference = new WeakReference<>(listener);
+ this.listener = listener;
}
@Override
@@ -91,21 +88,19 @@ public class FileUtils {
@Override
protected void onCancelled() {
- OnCheckFileWritePermissionListener listener = listenerWeakReference.get();
- if (listener != null) {
- listener.onError();
- }
+ OnCheckFileWritePermissionListener localListener = listener;
+ listener = null;
+ localListener.onError();
}
@Override
protected void onPostExecute(Boolean result) {
- OnCheckFileWritePermissionListener listener = listenerWeakReference.get();
- if (listener != null) {
- if (result) {
- listener.onWritePermissionGranted();
- } else {
- listener.onError();
- }
+ OnCheckFileWritePermissionListener localListener = listener;
+ listener = null;
+ if (result) {
+ localListener.onWritePermissionGranted();
+ } else {
+ localListener.onError();
}
}
}