summaryrefslogtreecommitdiff
path: root/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/offline/MergeOfflineRegionsActivity.kt
diff options
context:
space:
mode:
Diffstat (limited to 'platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/offline/MergeOfflineRegionsActivity.kt')
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/offline/MergeOfflineRegionsActivity.kt26
1 files changed, 24 insertions, 2 deletions
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/offline/MergeOfflineRegionsActivity.kt b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/offline/MergeOfflineRegionsActivity.kt
index e9321d5e27..12169dbe8f 100644
--- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/offline/MergeOfflineRegionsActivity.kt
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/offline/MergeOfflineRegionsActivity.kt
@@ -24,7 +24,7 @@ class MergeOfflineRegionsActivity : AppCompatActivity() {
override fun onFileCopiedFromAssets() {
Toast.makeText(
this@MergeOfflineRegionsActivity,
- String.format("OnFileCOpied."),
+ String.format("OnFileCopied."),
Toast.LENGTH_LONG).show()
mergeDb()
}
@@ -57,6 +57,27 @@ class MergeOfflineRegionsActivity : AppCompatActivity() {
}
}
+ /**
+ * Since we expect from the results of the offline merge callback to interact with the hosting activity,
+ * we need to ensure that we are not interacting with a destroyed activity.
+ */
+ private class MergeCallback(private var activityCallback: OfflineManager.MergeOfflineRegionsCallback?) : OfflineManager.MergeOfflineRegionsCallback {
+
+ override fun onMerge(offlineRegions: Array<out OfflineRegion>?) {
+ activityCallback?.onMerge(offlineRegions)
+ }
+
+ override fun onError(error: String?) {
+ activityCallback?.onError(error)
+ }
+
+ fun onActivityDestroy() {
+ activityCallback = null
+ }
+ }
+
+ private val mergeCallback = MergeCallback(onRegionMergedListener)
+
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_merge_offline_regions)
@@ -81,7 +102,7 @@ class MergeOfflineRegionsActivity : AppCompatActivity() {
private fun mergeDb() {
OfflineManager.getInstance(this).mergeOfflineRegions(
- FileSource.getResourcesCachePath(this) + "/" + TEST_DB_FILE_NAME, onRegionMergedListener
+ FileSource.getResourcesCachePath(this) + "/" + TEST_DB_FILE_NAME, mergeCallback
)
}
@@ -112,6 +133,7 @@ class MergeOfflineRegionsActivity : AppCompatActivity() {
override fun onDestroy() {
super.onDestroy()
+ mergeCallback.onActivityDestroy()
mapView.onDestroy()
// restoring connectivity state