[android] - use atomic boolean for hasSurface, check if renderer is created by validating if mapboxMap isn't null when invoking MapView#onLowMemory
This commit is contained in:
@@ -503,7 +503,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback {
|
||||
*/
|
||||
@UiThread
|
||||
public void onLowMemory() {
|
||||
if (nativeMapView != null && !destroyed) {
|
||||
if (nativeMapView != null && mapboxMap != null && !destroyed ) {
|
||||
nativeMapView.onLowMemory();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,6 +9,8 @@ import com.mapbox.mapboxsdk.log.Logger;
|
||||
import com.mapbox.mapboxsdk.maps.MapboxMap;
|
||||
import com.mapbox.mapboxsdk.storage.FileSource;
|
||||
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
|
||||
import javax.microedition.khronos.egl.EGLConfig;
|
||||
import javax.microedition.khronos.opengles.GL10;
|
||||
|
||||
@@ -32,7 +34,7 @@ public abstract class MapRenderer implements MapRendererScheduler {
|
||||
private long nativePtr = 0;
|
||||
private double expectedRenderTime = 0;
|
||||
private MapboxMap.OnFpsChangedListener onFpsChangedListener;
|
||||
protected boolean hasSurface;
|
||||
protected AtomicBoolean hasSurface = new AtomicBoolean();
|
||||
|
||||
public MapRenderer(@NonNull Context context, String localIdeographFontFamily) {
|
||||
float pixelRatio = context.getResources().getDisplayMetrics().density;
|
||||
@@ -165,6 +167,6 @@ public abstract class MapRenderer implements MapRendererScheduler {
|
||||
* @return returns if renderer has a surface, false otherwise
|
||||
*/
|
||||
public boolean hasSurface() {
|
||||
return hasSurface;
|
||||
return hasSurface.get();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import android.content.Context;
|
||||
import android.opengl.GLSurfaceView;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.view.SurfaceHolder;
|
||||
|
||||
import com.mapbox.mapboxsdk.maps.renderer.MapRenderer;
|
||||
import com.mapbox.mapboxsdk.maps.renderer.egl.EGLConfigChooser;
|
||||
|
||||
@@ -38,13 +39,13 @@ public class GLSurfaceViewMapRenderer extends MapRenderer implements GLSurfaceVi
|
||||
@Override
|
||||
public void surfaceCreated(SurfaceHolder holder) {
|
||||
super.surfaceCreated(holder);
|
||||
hasSurface = true;
|
||||
hasSurface.set(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void surfaceDestroyed(SurfaceHolder holder) {
|
||||
super.surfaceDestroyed(holder);
|
||||
hasSurface = false;
|
||||
hasSurface.set(false);
|
||||
nativeReset();
|
||||
}
|
||||
});
|
||||
@@ -102,7 +103,7 @@ public class GLSurfaceViewMapRenderer extends MapRenderer implements GLSurfaceVi
|
||||
*/
|
||||
@Override
|
||||
public void requestRender() {
|
||||
if (!hasSurface) {
|
||||
if (!hasSurface.get()) {
|
||||
return;
|
||||
}
|
||||
glSurfaceView.requestRender();
|
||||
|
||||
@@ -43,7 +43,7 @@ public class TextureViewMapRenderer extends MapRenderer {
|
||||
@Override
|
||||
protected void onSurfaceCreated(GL10 gl, EGLConfig config) {
|
||||
super.onSurfaceCreated(gl, config);
|
||||
hasSurface = true;
|
||||
hasSurface.set(true);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -59,7 +59,7 @@ public class TextureViewMapRenderer extends MapRenderer {
|
||||
*/
|
||||
@Override
|
||||
protected void onSurfaceDestroyed() {
|
||||
hasSurface = false;
|
||||
hasSurface.set(false);
|
||||
super.onSurfaceDestroyed();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user