Libgdx: Dispose of screen not working on android

101 Views Asked by At

I developing my game using libgdx and libktx. my main game class is:

class MyGame : KtxGame<KtxScreen>() {
val assets = AssetManager()

override fun create() {
    addScreen(LoadingScreen(this))
    setScreen<LoadingScreen>()
    super.create()
}

override fun dispose() {
    assets.dispose()
    super.dispose()
}
}

I want to restart my game screen after the game is over. for that, I remove the current game screen and add another one.

in my GameScreen.kt:

        myGame.removeScreen<GameScreen>()
        dispose()


        myGame.addScreen(GameScreen(myGame))
        myGame.setScreen<GameScreen>()

and dispose method is:

override fun dispose() {
        stage.dispose()
        super.dispose()
    }

I added some actors to this stage.

using this methods I monitoring memory usage:

val javaHeap = Gdx.app.getJavaHeap()/1000000
val nativeHeap = Gdx.app.getNativeHeap()/1000000

but after each time add a new screen (and remove older) about 30 Mb added to ram in Android. in Desktop some times adds nothing some times about 2Mb. for android I tested and ram allocated more than 1Gb after multiple remove and adding another screen.

0

There are 0 best solutions below