-7

Я сталкиваюсь как с runOnUiThread, так и с Handlers, но для меня все еще кажется сомнением в отношении того, какие факты они точно различаются.В чем разница между Handler и runOnUiThread?

Какой был бы лучший способ обновить интерфейс? Должен ли я использовать runOnUiThread или Handler?

Уже прошел через link. Все еще не в состоянии оправдать разницу.

Спасибо заранее

ответ

3

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

public final void runOnUiThread(Runnable action) { 
    if (Thread.currentThread() != mUiThread) { 
     mHandler.post(action); 
    } else { 
     action.run(); 
    } 
} 
1

Обработчики хороший способ реализации очереди событий. Он не должен запускаться в основном потоке, вы можете установить собственный петлитель. RunOnUiThread - это в основном ярлык, поэтому на самом деле у вас нет инициатора обработчика и так далее.

+0

Я знал это другое, тогда, если вы знаете, пожалуйста, ответьте. –

+0

Что значит «кроме этого»? Если вам нужно использовать Handler, вам нужно будет выделить память для каждого из ваших обработчиков, и вам нужно будет управлять, если вы уже работаете в своем обработчике. Сам метод делает это для вас. –

1

Обработчик регистрации, в котором он объявлен. или вы можете также установить петлитель вручную.

Обработчик особенно полезен, если вы хотите опубликовать несколько раз данные в основной поток.

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

 runOnUiThread(new Runnable() { 

       @Override 
       public void run() { 
        // update the ui 

       } 
      }); 

Таким образом, нет возможности повторного использования.

например, вы хотите обновить статус загрузки файла. вы должны написать вышеупомянутый метод несколько раз.

Но использование объектов Handler обновляет пользовательский интерфейс несколько раз, используя тот же объект-обработчик.