Handler.sendMessageDelayed (msg, delay) работает неправильно - PullRequest
6 голосов
/ 19 июня 2010

Я определил заставку, которая будет отображаться во время загрузки.Но в зависимости от подключения к Интернету загрузка может занять всего 600 мс, а иногда и 5000 мс.Итак, я определил, что заставка показывается как минимум 3000 мс, чтобы пользователь не раздражался мерцающим экраном.

Я определяю запуск заставки следующим образом:

 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);
        }
    }

НекоторыеСтроки кода в LoadThreads вызываются runOnUIThread ().К сожалению, если время

1 Ответ

0 голосов
/ 26 ноября 2013

возможно ошибка не в задержке.(не знаю без кода), но возможная причина в том, что ваш поток загрузки, отображающий другой макет после загрузки, и заставка становятся невидимыми под вашим верхним слоем.Splashscreen получает ваше сообщение после задержки, поэтому вы не увидите его позже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...