Pantalla Android Splash-Screen mientras se carga

Tengo una aplicación de Android, que muestra una "pantalla de bienvenida" durante 3 segundos. Después de eso, MainActivity se carga.

Desafortunadamente, MainActivity tarda ~ 4 segundos adicionales en cargarse. En la primera puesta en marcha aún más. Sin embargo, cuando se carga la aplicación, todo funciona sin problemas.

Ahora, ¿cómo puedo lograr que se cargue MainActivity durante la visualización de la pantalla de bienvenida? Solo debe mostrar una imagen hasta que todo se cargue por completo. He leído sobre Async-Task, pero no estoy seguro de dónde ponerlo y cómo usarlo correctamente. ¿Puede alguien ayudarme por favor?

SplashScreen.java

public class SplashScreen extends Activity {
    private static int SPLASH_TIME_OUT = 3000;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_startup);

        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                Intent i = new Intent(SplashScreen.this, MainActivity.class);
                startActivity(i);
                finish();
            }
        }, SPLASH_TIME_OUT);
    }
}

MainActivity.java

public class MainActivity extends Activity implements OnClickListener, MediaController.MediaPlayerControl {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //Some heavy processing
        //starting services
        //starting Google Text to Speech
        //and so on...

    }

}

Respuestas a la pregunta(5)

Su respuesta a la pregunta