Проблема паузы (?)

214
11 июня 2018, 14:20

Нужно, что бы автоматически вывелся текст в TextView, а по прошествию паузы он изменился. У меня так:

...
tv.setText("1");
SystemClock.sleep(2000);
tv.setText("2");
...

Но результат только такой: Пауза и выведение tv.setText("2");, а вот tv.setText("1"); - нет вообще. Менял виды пауз, виды действий до и после неё, виды методов (по клику, по перенаправлению ...), но увы, он будто игнорирует первое действие. Вероятно это связано только с виджетами.

Answer 1

Используйте Handler.

...
tv.setText("1");
runWithDelay();
...
private void runWithDelay() {
        final Handler handler = new Handler();
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                tv.setText("2");
            }
        }, 2000);
    }
Answer 2

SystemClock.sleep() не рекомендуется использовать в основном потоке.

Как вариант использовать:

Handler handler = new Handler(); 
    handler.postDelayed(new Runnable() {
         @Override 
         public void run() { 
              // что-то
         } 
    }, 2000); 

или

new CountDownTimer(5000, 1000) {
    @Override
    public void onTick(long millisUntilFinished) {
        // тик
    }
    @Override
    public void onFinish() {
        // на финише
    }
}.start(); 
Answer 3

Не надо усыплять главный поток - он из-за этого и не может обновить текст. Можно сделать через Handler или так (у каждой View есть свой) :

tv.setText("1");
tv.postDelayed(() -> tv.setText("2"), 2000);
READ ALSO
Ошибка заполнения RecyclerView

Ошибка заполнения RecyclerView

Из приложения заполняю данные на сервер Firebase, и тут же отображаю их в RecyclerView, по при первом запуске когда происходит запись на сервер в RecyclerView...

207
Бэкап MySQL базы через Java приложение

Бэкап MySQL базы через Java приложение

Делаю бэкапы базы данный MySQL в Java приложенииВот код:

178
Автозамена атрибута в теге с помощью редактора кода

Автозамена атрибута в теге с помощью редактора кода

Хочу заменить в тегах <img> все атрибуты src на data-src, по всему проекту, но чтобы не затрагивались теги script, js-код и тп

193