Когда нам может понадобиться использовать runOnUiThread в приложении для Android?
У меня есть пример кода, который использует эту функцию для запуска потока runOnUiThread
, почему и когда нам нужно это использовать?
редактировать
Как насчет использования AsyncTask
класс, что это pros
а также cons
??
2 ответа
Вы должны использовать runOnUiThread()
когда вы хотите обновить свой интерфейс из не-пользовательского потока. Например, если вы хотите обновить свой пользовательский интерфейс из фоновой темы. Вы также можете использовать Handler
за то же самое.
Из документов -
Запускает указанное действие в потоке пользовательского интерфейса. Если текущий поток является потоком пользовательского интерфейса, то действие выполняется немедленно. Если текущий поток не является потоком пользовательского интерфейса, действие публикуется в очередь событий потока пользовательского интерфейса.
Синтаксис -
Activity_Name.this.runOnUiThread(new Runnable() {
@Override
public void run() {
// your stuff to update the UI
}
});
Обновить -
AsyncTask -
Если вы хотите сделать некоторые
Network operation
или что-нибудь, что блокирует ваш пользовательский интерфейс, в этом случае AsyncTask - лучший вариант. Существует несколько других способов выполнения тех же фоновых операций, которые вы можете использовать.Service
,IntentService
также для выполнения фоновых операций. Использование AsyncTask поможет вам выполнить работу с пользовательским интерфейсом, а также не будет блокировать ваш пользовательский интерфейс, пока не начнется фоновая операция.
Из документов -
AsyncTask позволяет правильно и легко использовать поток пользовательского интерфейса. Этот класс позволяет выполнять фоновые операции и публиковать результаты в потоке пользовательского интерфейса без необходимости манипулировать потоками и / или обработчиками.
Обновлять userinterface
из нити нужно использовать runOnUiThread
, Но используя asynctask
лучше, чем использовать runonuithread
, /questions/32328697/android-runonuithread-i-asynctask эта ссылка может помочь вам