| Produto: | TOTVS Agro Bioenergia |
|---|---|
| Linha de Produto: |
|
| Segmento: | Engenharia |
| Módulo: | APLICATIVOS PORTATEIS |
| Função: | APLICAÇÕES MOBILIDADE (Meus Aplicativos TOTVS) |
| Ticket: | |
| Requisito/Story/Issue (informe o requisito relacionado) : | DAGROFRAME-5763 |
Na classe MenuActivity do Meus Aplicativos TOTVS existem classes e métodos com implementações depreciadas, com a utilização da classe AsyncTask para processo que acontecem em background. Há também a utilização de Hadlers de forma depreciada e que devem ser
A forma atual da classe MenuActivity pode causar vazamento de memória, o que pode causar fechamento do aplicativo de forma inesperada.
A classe AsyncTask foi descontinuada a partir do Android API 30 (Android 11), sendo recomendada a utilização de alternativas mais modernas e seguras, como ExecutorService, HandlerThread ou bibliotecas como Coroutine (Kotlin) e RxJava.
Todos os usos de AsyncTask foram removidos da classe MenuActivity.
As operações assíncronas, como chamadas de rede e processamento em background, foram migradas para o uso de ExecutorService com Runnable e callbacks para a thread principal via Handler.
Foi criado um ExecutorService de thread única para executar tarefas em background.
O retorno dos resultados para a UI é feito utilizando um Handler associado ao Looper.getMainLooper().
O uso de Handler foi revisado para garantir que não haja vazamento de memória e que as mensagens sejam tratadas corretamente, principalmente após a remoção do AsyncTask.
Todas as classes que estendem Handler agora recebem uma referência fraca (WeakReference) para a Activity ou contexto, evitando vazamentos de memória caso a Activity seja destruída antes do processamento da mensagem.
Os métodos handleMessage foram revisados para garantir que:
Os Handler agora são utilizados em conjunto com o ExecutorService para receber mensagens de conclusão de tarefas assíncronas, substituindo o papel do onPostExecute do AsyncTask.
Nos métodos onPause e onDestroy da MenuActivity, são chamados removeCallbacksAndMessages(null) nos Handler para evitar o processamento de mensagens após o ciclo de vida da tela.
Execução assíncrona e retorno para a UI via onPostExecute.
Execução assíncrona via executorService.execute().
Retorno para a UI via mainThreadHandler.post() ou envio de mensagem para o Handler customizado.
Manutenção: Código mais moderno, seguro e alinhado com as práticas recomendadas do Android.
Performance: Menor risco de vazamentos e travamentos por referência indevida à UI.
Compatibilidade: Pronto para futuras versões do Android.
Não se aplica
Não se aplica