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

Разница между потоком пользовательского интерфейса и рабочим потоком в Android?

Я прочитал документы о Thread на Android, но не смог найти различий между потоком пользовательского интерфейса и Worker Thread. Может ли кто-нибудь просто дать мне больше примеров об этом?

4b9b3361

Ответ 1

Нить Ui - это поток, который вносит изменения в ui.

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

Если вы делаете большие объемы обработки в потоке ui, пока происходит изменение на ui, ui замерзнет до тех пор, пока у вас не закончится выполнение.

Ответ 2

Это отчасти терминология. Люди используют слово "рабочий", когда они означают поток, который не владеет или не взаимодействует с пользовательским интерфейсом. Темы, которые обрабатывают интерфейс, называются потоками "UI". Обычно основной (основной) поток будет потоком, который владеет и управляет пользовательским интерфейсом. И затем вы запускаете один или несколько рабочих потоков, которые выполняют конкретные задачи. Эти рабочие потоки не изменяют интерфейс напрямую.

например, если нам нужно изменить компонент пользовательского интерфейса, например, изменить текст в текстовом виде, показать тост и т.д., показать предупреждение, тогда нам нужно использовать поток пользовательского интерфейса. bcoz thread - это просто процесс

мы можем получить доступ к пользовательскому интерфейсу в потоке с помощью метода runOnUiThread

пример runOnUiThread: используйте этот метод внутри потока

new Thread() {
        @Override
        public void run() {
            //If there are stories, add them to the table
            try {
                     // code runs in a thread
                     YourActivity.this.runOnUiThread(new Runnable() {
                         @Override
                         public void run() {
                             Toast.makeText(context,"this is UI thread",0).show();
                         }
                    });
               } catch (final Exception ex) {
                   Log.i("---","Exception in thread");
               }
        }
 }.start();