Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

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

reafatorar

03. SOLUÇÃO

...

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

...