Ответ 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 позволяет правильно и легко использовать поток пользовательского интерфейса. Этот класс позволяет выполнять фоновые операции и публиковать результаты в пользовательском интерфейсе нить без необходимости манипулировать потоками и/или обработчиками.