¿Una manera fácil de detectar dónde se está bloqueando el hilo de ui en Android?
He tomado un proyecto de Android de un empleado anterior y me pregunto si hay una herramienta fácil de usar para perfilar una aplicación de Android. Tengo un LinearLayout con un spinner de ProgressBar dentro de él. Ahora estoy ejecutando una llamada de red en un hilo diferente mientras que el hilandero está mostrando. Utilizo una animación de la traducción para demostrar el LinearLayout entero y cuando la llamada de la red vuelve en el otro hilo ocultar el LinearLayout. Ahora esto funciona muy bien, pero veo que el spinner tipo de deja de girar mientras se está mostrando. Ahora parece que si interactúo con la pantalla, como intentar desplazarse, la ruleta continuará girando. Para un spinner estándar de ProgressBar ¿necesito fijar un cierto comando en el hilandero para mantenerlo girar? Cualquier información sobre esto sería genial.
Gracias
- NDK / JNI: identificando el hilo actual
- Cómo "esperar" un hilo en Android
- Android AsyncTask.THREAD_POOL_EXECUTOR vs ThreadPool personalizado con Runnables
- Modo de depuración de Android Eclipse - Temas
- android-Cómo ejecutar el servicio en diferentes hilos de rosca principal?
- Valor devuelto del hilo
- Precisión del sueño del hilo
- Java.lang.Thread.setPriority vs android.os.Process.setThreadPriority
- Comunicación multihilo: ¿qué tan bueno es el uso de variables atómicas como AtomicInteger? ¿Por qué no hay AtomicFloat?
- Java.lang.IllegalMonitorStateException: objeto no bloqueado por hilo antes de wait ()?
- ¿OnPreExecute () y onPostExecute () se ejecutan en el subproceso de interfaz de usuario o en el subproceso desde el que se inició AsyncTask?
- ¿Debo usar setDaemon () en android?
- Obtener hilo por nombre
Puede utilizar StrictMode para detectar llamadas caras que se están realizando en el subproceso de interfaz de usuario.
¿Por qué no intentar implementar su llamada de red en un AsyncTask ? En la implementación del método onPostExecute
puedes hacer lo que sea necesario en la interfaz de usuario (es decir, ocultar tu progressBar, etc.).
O bien, si está utilizando la biblioteca de compatibilidad / soporte , o dirigiéndose a Honeycomb o posterior, utilice un cargador en su lugar.