diff options
Diffstat (limited to 'platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp')
-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 |