Oi Felipe, blz?
Sobre os métodos de callback. Sim, eles são executados na main UI thread da aplicação. Porém, apenas para casos do Android.
Entretanto, você pode configurar o builder do retrofit para ele usar uma thread paralela por meio do método callbackExecutor
enviando o parâmetro Executors.newSingleThreadExecutor()
:
retrofit = new Retrofit.Builder()
.baseUrl("http://192.168.65.40:8080/api/")
.addConverterFactory(JacksonConverterFactory.create())
.callbackExecutor(Executors.newSingleThreadExecutor())
.client(client.build())
.build();
Ao usar essa abordagem, tenha consciência de que tudo que você for rodar com o Retrofit nessa configuração não vá mexer com nada que envolva a UI do Android, pois vai quebrar a aplicação. No geral, é algo bem arriscado e tende a dar dor de cabeça...
Mas nada impede de você, por exemplo, criar dois construtores, um para usar a configuração padrão que é para a thread da UI application e outra para essa thread separada.
Sobre a parte do swipe: Pelo o que eu entendi você quer deixar o swipe aparecendo mesmo se sair da activity, certo? Se for isso, o swipe vai ficar aparecendo da mesma forma, exceto se chegar no estado de onDestroy
, pois nesse caso a activity que criou o swipe vai deixar de existir, logo o swipe vai morrer também.
Você pode até testar esse comportamento colocando a parada do swipe dentro de um postDelayed
do Handler
que explico no curso 3.
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
// implementação que remove a animação do swipe
}
}, 30000);
Nesse código o tudo que estiver dentro do run
vai ser executado depois do tempo configurado, no caso 30000 que está em milissegundos, ou seja, 30 segundos. Dessa forma é possível de ver quando o swipe fica ou sai da aplicação :)
Caso tiver alguma dúvida é só avisar. Espero ter ajudado.
[]s