[android] - add javadoc to highlight imcompatible onIdle with snapshot API, update test app example to use OnFullyRenderedFrame callback instead

This commit is contained in:
tobrun
2019-05-09 13:14:00 +02:00
committed by Tobrun
parent 842ee6b6f5
commit f586ec378e
2 changed files with 15 additions and 6 deletions

View File

@@ -937,6 +937,10 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback {
/**
* Interface definition for a callback to be invoked when the map has entered the idle state.
* <p>
* Calling {@link MapboxMap#snapshot(MapboxMap.SnapshotReadyCallback)} from this callback
* will result in recursive execution. Use {@link OnDidFinishRenderingFrameListener} instead.
* </p>
* <p>
* {@link MapView#addOnDidBecomeIdleListener(OnDidBecomeIdleListener)}
* </p>
*/

View File

@@ -2,6 +2,7 @@ package com.mapbox.mapboxsdk.testapp.activity.imagegenerator
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import com.mapbox.mapboxsdk.log.Logger
import com.mapbox.mapboxsdk.maps.MapView
import com.mapbox.mapboxsdk.maps.MapboxMap
import com.mapbox.mapboxsdk.maps.OnMapReadyCallback
@@ -17,12 +18,11 @@ class SnapshotActivity : AppCompatActivity(), OnMapReadyCallback {
private lateinit var mapboxMap: MapboxMap
private val idleListener = object : MapView.OnDidBecomeIdleListener {
override fun onDidBecomeIdle() {
mapView.removeOnDidBecomeIdleListener(this)
private val idleListener = MapView.OnDidFinishRenderingFrameListener { fully ->
if (fully) {
Logger.v(TAG, LOG_MESSAGE)
mapboxMap.snapshot { snapshot ->
imageView.setImageBitmap(snapshot)
mapView.addOnDidBecomeIdleListener(this)
}
}
}
@@ -36,7 +36,7 @@ class SnapshotActivity : AppCompatActivity(), OnMapReadyCallback {
override fun onMapReady(map: MapboxMap) {
mapboxMap = map
mapboxMap.setStyle(Style.Builder().fromUrl(Style.OUTDOORS)) { mapView.addOnDidBecomeIdleListener(idleListener) }
mapboxMap.setStyle(Style.Builder().fromUrl(Style.OUTDOORS)) { mapView.addOnDidFinishRenderingFrameListener(idleListener) }
}
override fun onStart() {
@@ -74,7 +74,12 @@ class SnapshotActivity : AppCompatActivity(), OnMapReadyCallback {
public override fun onDestroy() {
super.onDestroy()
mapView.removeOnDidBecomeIdleListener(idleListener)
mapView.removeOnDidFinishRenderingFrameListener(idleListener)
mapView.onDestroy()
}
companion object {
const val TAG ="Mbgl-SnapshotActivity"
const val LOG_MESSAGE = "OnSnapshot"
}
}