Tiempo inactivo de actividad para ActivityRecord
Así que tengo un problema extraño, y no estoy completamente seguro de lo que toda la información que debe proporcionar, pero voy a hacer todo lo posible – sólo quiero saber si tengo que añadir más información. Tengo un problema que cuando termino mi Activity
y regreso a la Activity
anterior (o la lanzo con una nueva Intent
– el problema parece estar centrado en terminar la Activity
) el rendimiento de la IU cae drásticamente durante unos seis o siete segundos , Luego vuelve a la normalidad.
Desde LogCat
, esta advertencia aparece de forma consistente:
- WebView no carga la página web
- ¿Cómo afecta la profundidad de color y / o el nivel de compresión de las imágenes al rendimiento de la interfaz de usuario?
- ¿Cómo probar la función de sincronización de ejecución en android?
- Uso de la batería, ¿qué esperar?
- Optimización de AndEngine juego
07-11 22:09:42.594: W/ActivityManager(292): Launch timeout has expired, giving up wake lock! 07-11 22:09:42.601: W/ActivityManager(292): Activity idle timeout for ActivityRecord{42bf6e00 com.kcoppock.sudokubeta/com.kcoppock.sudoku.SudokuBoardActivity}
Tan pronto como la actividad se agota, el rendimiento de la interfaz de usuario vuelve a la normalidad. Hasta ese punto es muy lento. No tengo ningún código que conozco que podría estar bloqueando el hilo principal, e incluso he ido tan lejos como para comentar todo mi método onPause()
para ver si hace alguna diferencia, y no lo hace.
La Activity
no genera ningún subproceso de fondo, no realiza ninguna actividad de red, el único acceso de disco que tiene es un acceso de SharedPreferences
. Las preguntas anteriores que he podido localizar son acerca de tiempos muertos inactivos para HistoryRecord
, no ActivityRecord
.
tienes una idea de que podría causar esto? ¿O cómo podría ir sobre la determinación de lo que está bloqueando el hilo de interfaz de usuario, si eso es lo que está sucediendo?
EDIT : Bueno, sólo trató de comentar todo excepto super.onCreate () y setContentView () – el problema persiste. No ocurre con ninguna otra actividad sino ésta, pero no hay NADA A ésta. : /
- Sencha Touch 2 - Desempeño de Android
- ¿Es esta una forma válida de mantener una referencia estática y Actividad / Contexto? ¿Por qué no debo hacer esto?
- Fragmentos de Android y su influencia en el rendimiento
- ¿Cómo obtener el contexto en el caso de prueba uiautomator?
- Problema "La prueba del repositorio tiene un error" al intentar importar el proyecto de bitbucket al android studio
- PercentRelativeLayout es más performante?
- ¿Qué capacidades de eliminación automática de overdraw Android proporciona?
- Es posible hacer SpeechRecognizer más rápido?
Oh, cariño. Una de esas cosas que es bastante difícil de diagnosticar fuera de ensayo y error, pero lo he descubierto. Para referencia, si alguien más tiene este problema, se redujo a una vista personalizada en mi diseño. Había añadido un ViewTreeObserver.OnGlobalLayoutListener()
para hacer algunas modificaciones de diseño después del pase de diseño, pero dentro de ese oyente que modificó el diseño y, por tanto, causó otro diseño, esencialmente creando un bucle infinito (pero de alguna manera no causa un ANR). Mi solución fue así:
private class BoardLayoutListener implements OnGlobalLayoutListener { @Override public void onGlobalLayout() { //...do stuff here //REMOVE this listener so that you don't repeat this forever ViewTreeObserver obs = SudokuBoard.this.getViewTreeObserver(); obs.removeGlobalOnLayoutListener(this); } }
Esta solución es bastante irónica, teniendo en cuenta mi segunda respuesta más alta calificación en StackOverflow trata específicamente con esto. :PAG
suspiro
He tenido el mismo problema hoy, pero como resultó tener una causa y una solución diferentes, decidí agregar la información aquí solo en caso de que pudiera ayudar a otra persona.
En mi caso el problema fue causado porque tenía la línea siguiente dentro de mi método de onActivityResult()
:
android.os.Debug.waitForDebugger();
Acabo de borrar la línea y el problema se había ido. Esta línea se utiliza generalmente para sincronizar el depurador con los subprocesos del sistema operativo, pero sólo pensé que no debería utilizarse en ninguna parte. Curiosamente el problema no aparecería hasta que tuve mi teléfono desconectado del escritorio.
Saludos