UIThread - это основной поток выполнения вашего приложения. Здесь выполняется большая часть кода вашего приложения. Все компоненты вашего приложения (Activity, Services, ContentProviders, BroadcastReceivers) создаются в этом потоке, и любые системные вызовы этих компонентов выполняются в этом потоке.
Например, предположим, что ваше приложение представляет собой один класс Activity. Затем все методы жизненного цикла и большая часть вашего кода обработки событий запускаются в этом UIThread. Это такие методы, как onCreate
, onPause
, onDestroy
, onClick
и т. Д. Кроме того, здесь выполняются все обновления пользовательского интерфейса. Все, что вызывает обновление или изменение пользовательского интерфейса, ДОЛЖНО происходить в потоке пользовательского интерфейса.
Для получения дополнительной информации о процессах и потоках вашего приложения щелкните здесь.
Когда вы явно создаете новый поток для работы в фоновом режиме, этот код не запускается в UIThread. Итак, что произойдет, если этому фоновому потоку потребуется что-то сделать, чтобы изменить пользовательский интерфейс? Вот для чего нужен runOnUiThread
. На самом деле вы должны использовать обработчик (см. Ссылку ниже для получения дополнительной информации). Он предоставляет этим фоновым потокам возможность выполнять код, который может изменять пользовательский интерфейс. Они делают это, помещая код изменения пользовательского интерфейса в объект Runnable и передавая его методу runOnUiThread.
Для получения дополнительной информации о создании рабочих потоков и обновлении пользовательского интерфейса с их помощью щелкните здесь
Я лично использую только метод runOnUiThread
в своих инструментальных тестах. Поскольку тестовый код не выполняется в UIThread, вам необходимо использовать этот метод для запуска кода, изменяющего пользовательский интерфейс. Итак, я использую его для вставки событий щелчка и ключевых событий в свое приложение. Затем я могу проверить состояние приложения, чтобы убедиться, что все произошло правильно.
Для получения дополнительной информации о тестировании и запуске кода в UIThread щелкните здесь
person
plainjimbo
schedule
06.09.2010