O manipulador criado no thread principal age como se estivesse em outro thread
Como o google diz:
Um manipulador permite enviar e processar objetos Message e Runnable associados ao MessageQueue de um thread. Cada instância do manipulador está associada a um único encadeamento e à fila de mensagens desse encadeamento. Quando você cria um novo manipulador, ele é vinculado à fila de encadeamentos / mensagens do encadeamento que o está criando - a partir desse momento, ele envia mensagens e executáveis para essa fila de mensagens e os executa à medida que saem da mensagem fila.
E eu espero que quando eu criar um manipulador no segmento principal (thread da interface do usuário), anexado a este segmento, para que faça com que congele a interface do usuário até o final da tarefa. Mas, no teste, isso não acontece e age como se estivesse em um encadeamento de fundo e faz sua tarefa paralelamente. Eu costumava criar o Handle assim:
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");
Em mainActivity (o identificador deve ser vinculado ao segmento Principal). Então, qual é o problema com isso ou eu crio o manipulador de maneira errada?
Alguns amigos percebem quedoSomthing()
não é complicado o suficiente, mas por que vemos "logoutSide" antes de "log in Handler:" se eles estão em um mesmo thread.