Quando houver rede, leitura e escrita de arquivos, operações de banco de dados e cálculos complexos no programa, para evitar que a thread principal da interface fique travada, serão utilizadas threads concorrentes.
A thread principal da interface do Android recebe todos os eventos de entrada, coloca-os em uma fila e usa o objeto da classe Looper para processar a fila.
Três maneiras de lidar com threads no Android:
Thread, java.util.concurrent (implementado pelas classes ThreadPools e Executor)
O próprio Android fornece a classe android.os.Handler e a classe AsyncTasks para lidar com threads, e há outros retornos de chamada para processamento de retorno de chamada. Por exemplo, a estrutura de software livre RxJava pode criar um observador para monitorar o fluxo de dados e, assim que o evento for acionado, a estrutura chamará o observador.
Manipulador:
Quando o objeto manipulador é criado no thread principal, ele fornece um "canal" para transferir dados com o thread principal. Os dados enviados podem ser um objeto da classe Message ou Runnable.No caso de múltiplas transmissões de dados, o Handler é muito utilizado.
Crie e reutilize objetos Handler:
Primeiro declare o objeto Handler, reescreva o método handleMessage(), use o método sendMessage(Message) para enviar uma mensagem ou sendEmptyMessage() para enviar um sinal.
Objetos executáveis também podem ser enviados usando o método post().
Para evitar a criação repetida de objetos, os objetos Handler existentes podem ser reutilizados.
manipulador = getWindow().getDecorView().getHandler();
Por exemplo:
Handler não passa parâmetros:
public class MainActivity ext