Efficiently switching Screens (libGDX)

My main question is, what is your most efficient way of switching screens? I’m asking because I figured out a way however it feels hacky.

Right now I have a main class that extends Game, and two other classes that implement Screen, Screen1 and Screen2. My main class uses setScreen() in its create() method to change to Screen1. Screen1 has a Timer object in its show() method, and after a certain amount of time it triggers a boolean to true. That boolean is used in my main classes render() method to setScreen() over to Screen2.


class Main extends Game {
	public static boolean splashScreenTimer = false;

	@Override
	public void create () {
		setScreen(new SplashScreen(this));
	}

	@Override
	public void render () {
		super.render();

		if(splashScreenTimer) {
			splashScreenTimer = false;
			setScreen(new MainMenu(this));
		}
	}

         (...)
}


public class SplashScreen implements Screen {
    @Override
    public void show() {
       (...things happen...)

        Timer.schedule(new Timer.Task(){
                           @Override
                           public void run() {
                               Main.splashScreenTimer = true;
                               dispose();
                           }
                       }
                , FADE_TIME
        );
    }
}

My code gets the job done but it just feels like there is a more optimal way of handling switching between different screens.