В чем разница между постом (Runnable r) и обработчиком основного потока и выполнением в основном потоке - PullRequest
1 голос
/ 28 ноября 2010
//case 1:post to main thread's handler
mHandler.post(new Runnable(){
    public void run(){
      dosomething();  //update UI
    });

//case 2:run in main thread
dosomething();

Ответы [ 2 ]

3 голосов
/ 23 февраля 2012

Даже если вы находитесь в потоке обработчика, случай 1 будет поставлен в очередь, а случай 2 будет выполнен немедленно.

2 голосов
/ 28 ноября 2010

Ну, если вы в главном потоке, значит вы в главном потоке, так что все в порядке.

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

...