Si estás iniciando en el desarrollo con Android, Xamarin, Flutter, o cualquier otro framework que te permita desarrollar para Android, seguramente te ha aparecido este mensaje que puede espantar a más de uno, pero qué significa realmente, y ¿cuándo debería de preocuparte? y ¿cómo se podría solucionar? A continuación, vamos a ver las respuestas a dichas preguntas.
The application may be doing too much work on its main thread.
Cuando te sale este mensaje, lo que significa es que la aplicación está tomando mucho tiempo para procesar alguna funcionalidad, lo que provoca que ciertos frames sean saltados u omitidos, es decir, que el hilo principal de la aplicación se detenga por un tiempo.
Esto puede ser provocado por una operación como por ejemplo, el consumo de un servicio REST, ó una llamada a una base de datos.
A continuación, una referencia de qué es eso de Choreographer:
El coreógrafo permite que las aplicaciones se conecten a la sincronización y programen correctamente las cosas para mejorar el rendimiento.
Android View Animations utiliza internamente Choreographer para el mismo propósito: cronometrar correctamente las animaciones y posiblemente mejorar su rendimiento.
Ya que al coreógrafo se le habla de cada evento de sincronización, puedo decir si uno de los Runnables transmitidos por el Choreographer.post* apis no termina en el tiempo de un fotograma, causando que los fotogramas se salten.
A mi entender, el coreógrafo sólo puede detectar el salto de fotograma. No hay forma de saber por qué sucede esto.
El mensaje “La aplicación puede estar haciendo demasiado trabajo en su hilo principal” podría ser engañoso.
Traducción realizada con el traductor www.DeepL.com/Translator
¿Debería de preocuparnos este mensaje?
La verdad, es que si el número de frames omitidos es poco (menor a 150), entonces podríamos decir que no debemos de preocuparnos, ya que pueden existir factores externos que lo estén provocando, como por ejemplo, un emulador lento.
Por otra parte, si vemos que el número de frames omitidos es alto (mayor a 300), entonces sí que debemos de preocuparnos, ya que lo más seguro es que la culpa sea de nosotros al escribir código.
Debemos recordar, que los dispositivos móviles tienen menores capacidades técnicas que una pc de escritorio ó una laptop, por lo que debemos de preocuparnos por optimizar al máximo la memoria.
Si tenemos una alta cantidad de fotogramas omitidos, lo más seguro es que tengamos una experiencia de usuario pobre, ya que la app se volverá lenta.
¿Cómo solucionar este problema?
Lo que debemos de hacer es identificar los lugares en nuestro código donde se realicen operaciones de procesamiento pesadas. Una vez identificadas estas partes de código, lo ideal es que las ejecutemos en otro hilo separadas al hilo principal de la interfaz gráfica.
Actualmente tanto en Android como en Xamarin, existen las llamadas tareas asíncronas, las cuales nos permitirán hacer llamadas a operaciones pesadas sin afectar la experiencia de usuario, y resolviendo esta problemática, por lo que tendremos una experiencia de usuario amigable.
Con esto, ya sabes entonces qué es y cómo solucionar el mensaje de “The application may be doing too much work on its main thread” en tus aplicaciones de Android.