Вопрос про обработчики в Android - PullRequest
1 голос
/ 28 сентября 2011

Если я правильно понял, обработчик работает как очередь. Итак, мой простой вопрос: если я сначала postDelayed, а после этого я делаю обычные сообщения. Будет ли работать второй пост после первого отложенного сообщения?

handler.postDelayed(someMethod(), 10000);
handler.post(someOtherMethod());

Будет ли someOtherMethod () работать после someMethod ()

Ответы [ 3 ]

1 голос
/ 28 сентября 2011

Нет, не будет. Второй будет выполнен немедленно, когда все ожидающие запросы обработчика (так в потоке пользовательского интерфейса) будут выполнены. Первый будет добавлен через 10 секунд.

Подсказка: обработчик получает Runnable, поэтому он выглядит так:

handler.post(new Runnable {
    public void run() {
        doSomething();
    }
}

Обновление на основе комментария:

Обработчик вызывает опубликованный исполняемый файл в потоке, в котором был вызван new Handler().

0 голосов
/ 28 сентября 2011

Нет, сообщения-обработчики асинхронны. что handler.post() делает это, что добавляет runnable в очередь сообщений. handler.postDelayed() немедленно добавляет исполняемый файл в очередь сообщений, но таймер будет установлен на задержку мс, после чего будет выполняться исполняемый файл.

так что все, что делает пост, это добавляет runnable в очередь сообщений.

0 голосов
/ 28 сентября 2011

Нет, 2-й пост будет запущен как можно скорее (до 1-го).

...