s
01. DADOS GERAIS
| 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-5753 |
02. SITUAÇÃO/REQUISITO
Na classe ParametersActivity 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 backgroud. Há também a utilização de Hadlers de forma depreciada e que devem ser
A forma atual da classe ParametersActivity pode causar vazamento de memória, o que pode causar fechamento do aplicativo de forma inesperada.
03. SOLUÇÃO
Classes que herdam de AsyncTask
- Primeiro foram criadas as seguintes instancias:
private final ExecutorService executorService = Executors.newSingleThreadExecutor();
private final Handler mainThreadHandler = new Handler(Looper.getMainLooper());
- As classes FindRecords e TestConnection que herdava de AsyncTask foram transformadas em métodos.
- O código que era executado sobrescrevendo o método doInBackground passou a ser executado pela implementação da função lambada do método executorService.execute()
- O código que era executado sobrescrevendo o método onPostExecute passou a ser executado pela implementação da função lambada do método mainThreadHandler.post(()
Desta forma os métodos trabalham com a thread da Activity e são destruídos quando a Thread é encerrada.
Inner Classes que herdam de Handler
- Primeiro foi criado a seguinte variável nas inner classes:
private final WeakReference<ParametersActivity> activityRef;
- Nas classes TelaHandler, HandlerQRCode e ProgressHandler que herdam de Handler foram criados construtores para receber uma instância do ParametersActivityb, a qual é utilizada para criar uma instância para a variável activityRef
TelaHandler(ParametersActivity activity) {
super(Looper.getMainLooper());
this.activityRef = new WeakReference<>(activity);
}
- A variável activity recebida no construtor també é utilizada para acessar o contexto da ParametersActivity, desta forma tambem evita vazamento de memória quando a ParametersActivity é encerrada.
ProcessDialog
A classe ProgressDialog também uma classe depreciada.
As variáveis:
private ProgressDialog waitDialog;
private ProgressDialog progressBar;
Foram subistituidas por:
private AlertDialog progressDialog;
private ProgressBar progressBarView;
04. DEMAIS INFORMAÇÕES
Não se aplica
05. ASSUNTOS RELACIONADOS
Não se aplica