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:
- ¿Robotium es confiable para probar cuán rápido comienzan las actividades y fragmentos?
- Cuenta de simulacro en ActivityInstrumentationTestCase2
- Estado emergente directamente desde coldstart
- Mejores Prácticas de Android - Comunicación entre Actividad y Fragmentos
- ListView MUY lento cuando se cargan imágenes (con Universal Image Loader)
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. : /
- ¿Es esta una forma válida de mantener una referencia estática y Actividad / Contexto? ¿Por qué no debo hacer esto?
- Optimización de AndEngine juego
- Fragmentos de Android y su influencia en el rendimiento
- Problema con la cámara personalizada de Android en algunos dispositivos
- Cómo detener la creación excesiva de objetos en los teléfonos Samsung?
- ¿Cuál es la principal ventaja y la desventaja de "no mantener las actividades" en android
- Android - ¿Cómo puedo medir el rendimiento de ListView y otras vistas?
- El menú deslizante de Android bloquea la interfaz de usuario
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