Obtengo el mensaje : “the application may be doing too much work on its main thread”, usando Retrofit con Android

publicado por: Anonymous

Buenas tengo este método para obtener el response:

public void cargarFilas(String filtro){

    OkHttpClient okHttpClient = new OkHttpClient.Builder()
            .addNetworkInterceptor(new StethoInterceptor())
            .build();

    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl("http://10.0.2.2/api/"+filtro+"/")
            .addConverterFactory(GsonConverterFactory.create())
            .client(okHttpClient)
            .build();

    apiService= retrofit.create(ApiService.class);
    Call<Usuario_Fila> call = apiService.list(txtBuscar.getText().toString());
    call.enqueue(new Callback<Usuario_Fila>(){

        @Override
        public void onResponse(Call<Usuario_Fila> call, Response<Usuario_Fila> response) {
            if (response.body() != null && response.isSuccessful()) {
                datos = response.body();
                Usuario_Adaptador_Busqueda adaptador = new Usuario_Adaptador_Busqueda(Usuario_BusquedaActivity.this, datos.getFila());
                list.setAdapter(adaptador);
            }
        }

        @Override
        public void onFailure(Call<Usuario_Fila> call, Throwable t) {
            Toast.makeText(Usuario_BusquedaActivity.this, "Fallo", Toast.LENGTH_SHORT).show();
        }
    });

}

El problema es que la actividad donde se ejecuta el método se pone muy lenta y tarda mucho hasta en darle a un botón. Me aparece esto en el log:

I/Choreographer(1378): Skipped 55 frames! The application may be
doing too much work on its main thread.

Muchas gracias.

solución

The application may be doing too much work on its main thread

Esto en realidad no es un error, pero es una advertencia, como la descripción lo indica, se esta realizando mucho procesamiento en el hilo principal.

Para arreglar esto, es necesario identificar los puntos donde haya o
posiblemente ocurra una larga duración de procesamiento. La mejor
manera es hacer todo el procesamiento no importa cuán pequeño o grande
en un hilo separado del hilo principal de la interfaz de usuario.
Así
sea acceder a los datos de una base de datos SQLite o hacer
algunas operaciones matemáticas hardcore o simplemente ordenar un array
Realizarlo en un Thread diferente.

https://developer.android.com/guide/components/processes-and-threads.html

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *