Благодарю. Я обновил свой вопрос и проверил последовательность регистрации.

угл говорит:

Обработчик позволяет отправлять и обрабатывать объекты 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:», если они находятся в одном потоке.

Ответы на вопрос(1)

Ваш ответ на вопрос