Подтвердить что ты не робот

Когда нам может понадобиться использовать runOnUiThread в приложении Android?

У меня есть образец кода, который использует эту функцию для запуска потока runOnUiThread. почему и когда нам нужно его использовать?

изменить

Как насчет использования класса AsyncTask, что pros и cons??

4b9b3361

Ответ 1

Вы должны использовать runOnUiThread(), когда хотите обновить свой пользовательский интерфейс из потока, отличного от UI. Например, если вы хотите обновить свой пользовательский интерфейс из фонового потока. Вы можете также использовать Handler для той же самой вещи.

Из Документов -

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

Синтаксис -

       Activity_Name.this.runOnUiThread(new Runnable() {

            @Override
            public void run() {
                // your stuff to update the UI

            }
        });

Обновление -

AsyncTask -

Если вы хотите сделать несколько Network operation или что-нибудь, что блокирует ваш пользовательский интерфейс в этом случае AsyncTask - лучшие варианты. Есть несколько другие способы выполнения тех же фоновых операций, что и вы используйте Service, IntentService также для выполнения фоновых операций. Использование AsyncTask поможет вам выполнить работу с пользовательским интерфейсом, а также не будет блокировать ваш пользовательский интерфейс до вашего фона. Операция продолжается.

Из Документов -

AsyncTask позволяет правильно и легко использовать поток пользовательского интерфейса. Этот класс позволяет выполнять фоновые операции и публиковать результаты в пользовательском интерфейсе нить без необходимости манипулировать потоками и/или обработчиками.

Ответ 2

Чтобы обновить userinterface из потока, вам нужно использовать runOnUiThread. Но использование asynctask лучше, чем использование runOnUiThread. android-runonuithread-vs-asynctask эта ссылка может помочь вам