private class MainGame extends Game
{
MainGame(Screen screen)
{
this.screen=screen;
}
@Override
public void create()
{
setScreen(screen);
}
@Override
public void dispose()
{
super.dispose();
screen.dispose();
}
}
我们看看Game的源码:
public abstract class Game implements ApplicationListener {
protected Screen screen;
public Game() {
}
public void dispose() {
if(this.screen != null) {
this.screen.hide();
}
}
public void pause() {
if(this.screen != null) {
this.screen.pause();
}
}
public void resume() {
if(this.screen != null) {
this.screen.resume();
}
}
public void render() {
if(this.screen != null) {
this.screen.render(Gdx.graphics.getDeltaTime());
}
}
public void resize(int width, int height) {
if(this.screen != null) {
this.screen.resize(width, height);
}
}
public void setScreen(Screen screen) {
if(this.screen != null) {
this.screen.hide();
}
this.screen = screen;
if(this.screen != null) {
this.screen.show();
this.screen.resize(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
}
}
public Screen getScreen() {
return this.screen;
}
}
Game.dispose()的时候screen是hide的,所以如果你将screen的内存释放写在dispose()函数中的话就要将自定义game中加上@Override
public void dispose()
{
super.dispose();
screen.dispose();
}