quinta-feira, 28 de junho de 2018

Rumo ao Certificado Android: Multithread com Executors

O que é Executors?
É uma forma segura de lidar com threads no Android sem ter as inconveniências de usar o Runnable padrão do Java.

Como implementar?
Aqui usaremos o padrão Singleton, para termos apenas uma referência ao Executor (podemos ter mais de um se desejar, mas é bom manter apenas uma referência para cada executor). Criamos um novo executor implementando uma outra classe que herda Executor, mas também podemos usar a classe Executors para outras formas de instanciar, como usando o método newSingleThreadExecutor ou newFixedThreadPool.

01. public class AppExecutor{
02.    private static final Object LOCK = new Object();
03.    private static AppExecutors instance;
04.    private final Executor executor;


05.    private AppExecutor(Executor executor){
06.       this.executor = executor;
07.    }


08.    public static AppExecutors getInstance(){
09.       if(instance==null){
10.          synchronized(LOCK){
11.             instance = new AppExecutor(ThreadExecutor()));
12.          }
13.       }
14.       return instance;
15.    }

16.    public Executor getExecutor(){
17.       return executor;
18.    }

19.    private static class ThreadExecutor implements Executor{
20.       private Handler threadHandler = new Handler(Looper.getMainLooper());

21.       @Override
22.       public void execute(@NonNull Runnable command){
23.         threadHandler.post(command);
24.       }
25.    }
26. }


Nenhum comentário:

Postar um comentário