@Override
    public void destroy() {
        if (glSurfaceView != null) {
            removeGLSurfaceView();
        }
        if (legacyApplication != null) {
            legacyApplication.destroy();
        }
        /*help the Dalvik Garbage collector to destruct the objects, by releasing their references*/
        /*context instances*/
        legacyApplication = null;
        appSettings = null;
        oglesContext = null;
        configurationInfo = null;
        /*extra data instances*/
        crashLogWriter = null;
        crashLog = null;
        /*nullifying helper instances and flags*/
        rendererThread = null;
        destructionPolicy = null;
        audioRendererType = null;
        handler = null;
        glEsVersion = null;
        /*nullifying the event handlers*/
        onRendererStarted = null;
        onRendererCompleted = null;
        onExceptionThrown = null;
        onLayoutDrawn = null;
        GameState.setLegacyApplication(null);
        GameState.setFirstUpdatePassed(false);
        JmeAndroidSystem.setView(null);
        jmeSurfaceViewLogger.log(Level.INFO, "Context and Game have been destructed.");
    }
A state change observer to the holder Activity life cycle, used to keep this android view up-to-date with the holder activity life cycle.

@param source the life cycle source, aka the observable object.
@param event  the fired event by the observable object, which is dispatched and sent to the observers.
jme3-android/src/main/java/com/jme3/view/surfaceview/JmeSurfaceView.java