Благодарю. Я обновил свой вопрос и проверил последовательность регистрации.
угл говорит:
Обработчик позволяет отправлять и обрабатывать объекты Message и Runnable, связанные с MessageQueue потока. Каждый экземпляр обработчика связан с одним потоком и очередью сообщений этого потока. Когда вы создаете новый обработчик, он привязывается к потоку / очереди сообщений потока, который его создает - с этого момента он будет доставлять сообщения и исполняемые файлы в эту очередь сообщений и выполнять их по мере их выхода из сообщения. очередь.
И я ожидаю, что когда я создаю обработчик в основном потоке (потоке пользовательского интерфейса), он присоединяется к этому потоку, так что это приводит к зависанию пользовательского интерфейса до завершения его задачи. Но в тесте этого не происходит, и он действует так, как будто он находится на заднем плане и выполняет свою задачу параллельно. Я использовал для создания дескриптора, как это:
Handler mainHandler = new Handler(Looper.getMainLooper());
Runnable runnable = new Runnable() {
@Override
public void run() {
for (int i = 0; i < 35000; i++) {
log.i(TAG,"log in Handler:"+i);
}}
};
mainHandler.post(runnable);
log.i(TAG,"log outSide");
В mainActivity (поэтому дескриптор должен быть привязан к основному потоку). Так в чем же проблема, или я создаю обработчик неправильно?
Некоторые друзья замечают, чтоdoSomthing()
не достаточно сложно, но почему мы видим «log outSide» перед «log in Handler:», если они находятся в одном потоке.