Premio al error del día: www.helloandroid.com

Hoy damos el premio al error del día a estos profesionales de www.helloandroid.com.



Siguiendo uno de sus ejemplos, que indica cómo se puede hacer un widget:esos iconos que se ponen en la pantalla, como relojes, tiempo meteorológico y demás.

Concretamente explican cómo hacer uno con los días que faltan hasta navidad, que es lo de menos. Lo importante es saber cómo han hecho para que el widget se actualice cada cierto tiempo, porque Android, en prinicipio sólo permite hacerlo una vez cada 30 minutos como mucho.
Y aquí es donde yo sigo su ejemplo y le cambio los 60 segundos que ellos utilizan por 1 segundo, para ver si la cosa va bien.

Y sí, parece que va bien. El iconito muestra los segundos de la hora actual con alegría.

Dejamos el móvil un ratín a su aire, digamos, una hora.

Pero mi alegría inicial se va tornando más oscura cuando la desbloquear el móvil veo que el numerín  está parado. Y no sólo eso: además, cambiar de una pantalla a otra se ha convertido en algo pegajoso.

En el log del teléfono que puede verse desde Eclipse, a parte del log que he hecho que deje el widget cada vez que actualiza el número, empezamos a ver con frecuencia cosas somo estas:

02-17 03:37:23.195: D/dalvikvm(9546): GC_CONCURRENT freed 1620K, 38% free 9020K/14535K, external 5496K/6863K, paused 2ms+5ms
02-17 03:37:23.500: D/dalvikvm(9760): GC_CONCURRENT freed 1988K, 53% free 4530K/9479K, external 10379K/12380K, paused 2ms+2ms

Un poco más adelante...
02-17 03:41:08.420: D/dalvikvm(9997): GC_EXPLICIT freed 11K, 50% free 2737K/5447K, external 0K/0K, paused 16ms
02-17 03:41:08.615: D/dalvikvm(9760): GC_CONCURRENT freed 1978K, 53% free 4649K/9735K, external 10379K/12380K, paused 2ms+2ms

Luego empiezan a aparecer de tres en tres.

02-17 03:43:10.345: D/dalvikvm(9546): GC_CONCURRENT freed 2019K, 39% free 8971K/14535K, external 5502K/6863K, paused 4ms+7ms
02-17 03:43:10.355: D/dalvikvm(9760): GC_CONCURRENT freed 2139K, 54% free 4578K/9799K, external 10379K/12380K, paused 2ms+6ms
02-17 03:43:10.825: D/dalvikvm(9760): GC_CONCURRENT freed 1925K, 53% free 4666K/9799K, external 10379K/12380K, paused 1ms+2ms

Luego, de cuatro en cuatro:
02-17 03:49:15.160: D/dalvikvm(10607): GC_EXPLICIT freed 35K, 50% free 2721K/5379K, external 0K/0K, paused 27ms
02-17 03:49:15.220: D/dalvikvm(11003): GC_EXTERNAL_ALLOC freed 483K, 57% free 4107K/9543K, external 4184K/4184K, paused 31ms
02-17 03:49:15.325: D/dalvikvm(9546): GC_CONCURRENT freed 2542K, 37% free 9189K/14535K, external 1608K/2056K, paused 3ms+5ms
02-17 03:49:15.475: D/dalvikvm(9760): GC_CONCURRENT freed 1280K, 39% free 7373K/11975K, external 10442K/12380K, paused 2ms+3ms

Comienzan a aparecer logs de error:
02-17 03:52:49.215: E/JavaBinder(9546): !!! FAILED BINDER TRANSACTION !!!
02-17 03:52:49.215: E/JavaBinder(9546): !!! FAILED BINDER TRANSACTION !!!
02-17 03:52:49.215: E/JavaBinder(9546): !!! FAILED BINDER TRANSACTION !!!

Y finalmente la perla:


Pulsamos el botón de inicio. Aparece el escritorio SIN el widget. Luego aparece el widget, pero no se actualiza cada segundo ni de lejos. El escritorio se ha convertido en algo súmamente pegajoso, nada ágil.

Aparece la segunda perla:

Y una tercera:


Vuelve a aparecer el error de que TwLanuncher no responde varias veces.

La hecatombe sucede: el móvil se reinicia. Prefiero pensar es el wiget no es la causa.

Tampoco quiero pensar que el siguiente log tiene algo que ver:

02-17 03:04:54.785: I/ActivityManager(9546): No longer want ####.####.####.calendario (pid 10554): hidden #26

Donde hemos sustituido las partes sensibles con #, claro.

Buscando en Google encuentro esta página en la que aparece el código fuente de la clase ActivityManager de Android. 

12272 Slog.i(TAG, "No longer want " + app.processName
12273           + " (pid " + app.pid + "): hidden #" + numHidden);
12274 EventLog.writeEvent(EventLogTags.AM_KILL, app.pid,
12275           app.processName, app.setAdj, "too many background");
12276 app.killedBackground = true;
12277 Process.killProcessQuiet(app.pid);

 

Me tienta interpretarlo como "Estás haciendo demasiadas cosas. A tomar viento."

La cuestión es que el widget ha funcionado correctamente apenas una hora: una mierda de widget.

Y concluyo dándole mis felicitaciones a www.helloandroid.com por este estupendo tutorial que hará las delicias de los novatos y que, con seguridad, les animará a seguir adelante y sobretodo acudiendo a su web en busca de su valiosa información y experiencia profesional.



P.D.: Quien quiera tutoriales que funcionan e informacion veraz puede ir a la página web de este señor que no conozco pero felicito:  http://www.vogella.de

No hay comentarios :

Publicar un comentario