UIThread - основний потік виконання для вашої програми. Тут виконується більша частина коду вашої програми. Усі компоненти вашої програми (Activity, Services, ContentProviders, BroadcastReceivers) створюються в цьому потоці, і будь-які системні виклики цих компонентів виконуються в цьому потоці.
Наприклад, припустимо, що ваша програма - це один клас Activity. Тоді всі методи життєвого циклу та більшість вашого коду обробки подій запускаються в цьому UIThread. Ці методи , як onCreate
, onPause
, onDestroy
, onClick
і т.д. Крім того, це де всі оновлення до UI зроблені. Все, що призводить до оновлення або зміни інтерфейсу користувача, МОЖЕ відбуватися в потоці інтерфейсу користувача.
Для отримання додаткової інформації про процеси та потоки вашої програми натисніть тут.
Коли ви явно створюєте новий потік для роботи у фоновому режимі, цей код не запускається на UIThread. Отже, що трапиться, якщо цей фоновий потік повинен зробити щось, що змінює інтерфейс? Для цього і runOnUiThread
є. Насправді ви повинні використовувати обробник (див. Посилання нижче для отримання додаткової інформації про це). Він надає цим фоновим потокам можливість виконувати код, який може змінювати інтерфейс користувача. Вони роблять це, поміщаючи код, що модифікує інтерфейс, в об’єкт Runnable і передаючи його методу runOnUiThread.
Для отримання додаткової інформації про нерест робочих потоків та оновлення інтерфейсу з них натисніть тут
Я особисто використовую цей runOnUiThread
метод лише в своїх тестах на приладобудування. Оскільки тестовий код не виконується в UIThread, вам потрібно використовувати цей метод для запуску коду, який змінює інтерфейс користувача. Отже, я використовую його для введення кліків та ключових подій у мою програму. Потім я можу перевірити стан програми, щоб переконатися, що сталося правильно.
Для отримання додаткової інформації про тестування та запуск коду на UIThread натисніть тут