Spokojnie możesz zignorować ten komentarz, jednak napiszę o swoich przemyśleniach w celach dydaktycznych ;)

Zastanawiam się, czy Twoje rozwiązanie nie powinno też ograniczać czasu maksymalnego pokazywania splasha. W obecnym podejściu jest założenie, że czas parsowania danych jest krótszy niż czas pokazania splash screena. Myślę, że jest to dość poprawne założenie, jednak w przypadku jakichś dużych danych z obrazkami, dużą liczbą ścieżek w XML itp itd, i na jakimś starszym urządzeniu (nie mówiąc o emulatorze ;)) może się okazać że jest na odwrót. Wtedy nasz splash screen będzie wyświetlał się tak długo jak długo potrwa wczytywanie danych, co może nie być najprzyjemniejsze dla użytkownika.
Sam w takim przypadku wykorzystałbym 2 osobne i zupełnie niezależne mechanizmy - jeden do parsowania, drugi do pokazania splasha. Parsowanie mogłoby być robione dokładnie tak jak robisz to teraz. Pokazania splasha natomiast mogłoby być realizowane przez handler odpalany na wątku UI zaraz na starcie apki (+zabezpieczenie przed kilkukrotnym odpaleniem), np tak:

... onCreate(...) {
....
    new Handler().postDelayed(new Runnable() {
        public void run() {
            startActivity(new Intent(SplashScreen.this, MainActivity.class));
            finish();
        }
    }, SPLASH_TIMEOUT_MS);
...
}