Handler.sendMessageDelayed (сообщение, задержка) не работающий правильно

Я определил splashscreen, который покажут во время загрузки. Но в зависимости от интернет-соединения это может брать только 600 мс для загрузки или иногда 5 000 мс. Таким образом, я определил это, splashscreen, по крайней мере, показывают 3 000 мс так, чтобы пользователь не был раздражен путем дрожания экран.

Я определяю запуск splashscreen следующий путь:

 private void splashScreen() {
        setContentView(R.layout.splashscreen);
        splash = (ImageView) findViewById(R.id.splashscreenLayer);
        startSplashTime = new Date();
        new LoadingThread().start(); 
    }

В LoadingThread я проверяю сеть и данные загрузки из Интернета:

private class LoadingThread extends Thread {

        @Override
        public void run() {
            checkNetwork();
        }

    }

Как только загрузка сделана, я отправляю сообщение на свой обработчик, определенный в MainActivity:

public void stopSplash() {
        Message msg = new Message();
        msg.what = STOPSPLASH;

        Date endSplashTime = new Date();
        long time = endSplashTime.getTime() - startSplashTime.getTime();
        System.out.println("Time Splashscreen was displayed: " + time);
        if (time < SPLASH_MIN_TIME) {
            long delay = SPLASH_MIN_TIME - time;
            System.out.println("Delay Splashscreen for: " + delay);
            splashHandler.sendMessageDelayed(msg, delay);
        } else {
            System.out.print("Show Splashscreen now");
            splashHandler.sendMessage(msg);
        }
    }

Некоторые строки кода на LoadingThreads называет runOnUIThread (). К сожалению, если время <SPLASH_MIN_TIME сообщение не отложено, но отправьте немедленно. Я думаю с sendMessageDelayed (), это не должно иметь место. Кто-либо знает почему? sysout показывает, что время задержки вычисляется правильно.Спасибо!

6
задан slybloty 24 August 2012 в 19:08
поделиться