diff options
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 |
commit | b7fafaa42949cbe27a36ab99b21d3c75819dbd0c (patch) | |
tree | 5ffb52b974fcf338f67ce8839995c4603ffdb7ff /platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/offline/MergeOfflineRegionsActivity.kt | |
parent | cf08f6428af4b772ba0e830a0a73a150a0b9d641 (diff) | |
download | qtlocation-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.kt | 26 |
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 |