Sobes.tech
Middle

Quais são as formas de criar um fluxo no Android?

sobes.tech IA

Resposta da IA

No Android, pode criar threads das seguintes maneiras:

  • Herança de Thread:

    // Classe que herda de Thread
    class MyThread extends Thread {
        @Override
        public void run() {
            // Código da tarefa executada no novo thread
            System.out.println("Thread criado por herança de Thread");
        }
    }
    // Criação e início do thread
    MyThread myThread = new MyThread();
    myThread.start();
    
  • Implementação da interface Runnable:

    // Classe que implementa Runnable
    class MyRunnable implements Runnable {
        @Override
        public void run() {
            // Código da tarefa executada no novo thread
            System.out.println("Thread criado por implementação de Runnable");
        }
    }
    // Criação do thread usando Runnable
    Thread thread = new Thread(new MyRunnable());
    thread.start();
    
  • Uso de AsyncTask (obsoleto): para executar operações em background e atualizar a UI.

  • Uso de HandlerThread: uma classe especial de Thread com Looper e Handler, facilitando o trabalho com a fila de mensagens em um thread em background.

    // Criação de HandlerThread
    HandlerThread handlerThread = new HandlerThread("MyHandlerThread");
    handlerThread.start();
    // Obtenção do Looper
    Looper looper = handlerThread.getLooper();
    // Criação de Handler ligado ao Looper
    Handler handler = new Handler(looper);
    // Envio de tarefa para a fila do thread
    handler.post(new Runnable() {
        @Override
        public void run() {
            // Código da tarefa executada em handlerThread
            System.out.println("Thread criado usando HandlerThread");
        }
    });
    
  • Uso de ExecutorService e ThreadPoolExecutor: para gerenciar um pool de threads.

    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    
    // Criação de um pool de threads com tamanho fixo
    ExecutorService executor = Executors.newFixedThreadPool(2);
    // Envio de tarefa para execução no pool
    executor.execute(new Runnable() {
        @Override
        public void run() {
            // Código da tarefa executada em um dos threads do pool
            System.out.println("Thread criado usando ExecutorService");
        }
    });
    // Encerramento do pool (importante para evitar vazamentos)
    executor.shutdown();
    
  • Uso de corutinas Kotlin: abordagem moderna para programação assíncrona no Android.

    import kotlinx.coroutines.*
    
    // Iniciar uma coroutine em um thread em background
    GlobalScope.launch(Dispatchers.IO) {
        // Código da tarefa executada em um thread em background (IO)
        println("Thread criado usando corutinas")
    }