summaryrefslogtreecommitdiff
path: root/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/offline/MergeOfflineRegionsActivity.kt
diff options
context:
space:
mode:
authorŁukasz Paczos <lukas.paczos@gmail.com>2019-05-07 13:19:53 +0200
committerŁukasz Paczos <lukasz.paczos@mapbox.com>2019-05-10 14:15:06 +0200
commitb7fafaa42949cbe27a36ab99b21d3c75819dbd0c (patch)
tree5ffb52b974fcf338f67ce8839995c4603ffdb7ff /platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/offline/MergeOfflineRegionsActivity.kt
parentcf08f6428af4b772ba0e830a0a73a150a0b9d641 (diff)
downloadqtlocation-mapboxgl-b7fafaa42949cbe27a36ab99b21d3c75819dbd0c.tar.gz
[android] use strong references to the offline merge callbacks
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