Handler creado en el hilo principal actúa como si estuviera en otro hilo

Como dice google:

A Handler le permite enviar y procesar mensajes y objetos ejecutables asociados con MessageQueue de un hilo. Cada instancia de Handler está asociada con un solo hilo y la cola de mensajes de ese hilo. Cuando crea un nuevo controlador, está vinculado a la cola de hilos / mensajes del hilo que lo está creando; a partir de ese momento, entregará mensajes y ejecutables a esa cola de mensajes y los ejecutará a medida que salgan del mensaje. cola

Y espero que cuando cree un controlador en el subproceso principal (subproceso de interfaz de usuario) que se adjunta a este subproceso, por lo que hace que se congele la interfaz de usuario hasta que finalice su tarea. Pero en la prueba esto no sucede y actúa como si estuviera en un hilo de fondo y realiza su tarea en paralelo. Solía crear Handle así:

 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");

In mainActivity (por lo que el controlador debe estar vinculado al hilo principal). Entonces, ¿cuál es el problema con esto o estoy creando el controlador de manera incorrecta?

Algunos amigos notan quedoSomthing() no es lo suficientemente complicado, pero por qué vemos "log outSide" antes de "log in Handler:" si están en el mismo hilo.

Respuestas a la pregunta(1)

Su respuesta a la pregunta