Как выполнить Выполнимый поток в Android в определенных интервалах?

Я разработал приложение для отображения некоторого текста в определенных интервалах на экране эмулятора Android. Я использую Handler класс. Вот отрывок из моего кода:

handler = new Handler();
Runnable r = new Runnable() {
    public void run() {
        tv.append("Hello World");               
    }
};
handler.postDelayed(r, 1000);

Когда я запускаю это приложение, текст отображен только однажды. Почему?

335
задан Ravindra babu 5 September 2017 в 01:14
поделиться

1 ответ

Простое исправление для вашего примера:

handler = new Handler();

final Runnable r = new Runnable() {
    public void run() {
        tv.append("Hello World");
        handler.postDelayed(this, 1000);
    }
};

handler.postDelayed(r, 1000);

Или мы можем использовать, например, обычный поток (с исходным Runner):

Thread thread = new Thread() {
    @Override
    public void run() {
        try {
            while(true) {
                sleep(1000);
                handler.post(this);
            }
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
};

thread.start();

Вы можете рассматривать свой запускаемый объект просто как команду, которая может быть отправленным в очередь сообщений для выполнения, а обработчик - просто вспомогательный объект, используемый для отправки этой команды.

Более подробная информация здесь http://developer.android.com/reference/android/os/Handler. html

515
ответ дан 23 November 2019 в 00:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: