Pregunta

Estoy editando el código de una aplicación de Android que está haciendo llamadas GPS en un servicio.LocationListener.También utiliza ServiceConnection

En algunas vistas, el dispositivo decide que mi aplicación está tomando demasiado tiempo para responder, y que el usuario puede "forzar cerca" o "esperar".Antes de que aparezca esta ventana emergente, la aplicación aún es utilizable por el usuario, pueden desplazarse, deslizarse, presione los botones, etc.

Solo estoy asumiendo que esto está relacionado con el servicio GPS, ya que se está ejecutando cada vez que ocurre este problema.

Escuché que este problema tiene que ver con un hilo que se ejecuta en el UITHREAD, en lugar de un hilo de fondo.Pero estaba seguro de que los servicios se ejecutan de forma asíncrona en el hilo de fondo.

Insight Apreciado

¿Fue útil?

Solución

El uso de un servicio no necesariamente generará un nuevo hilo, la llamada de servicio se ejecuta en su hilo de llamadas.Desde el Servicio API de Android Doc en: "Tenga en cuenta que los servicios, como otros objetos de la aplicación, se ejecutan en el hilo principal de su proceso de alojamiento ..".

Puede especificar el servicio para ejecutarse en un proceso diferente, pero la mejor práctica es generar un nuevo hilo en el servicio.

Más sobre el servicio de Android en: http://developer.android.com/reference/android/app/service.html

Otros consejos

Le recomiendo completamente que extienda a Asincasques, permite un uso adecuado y fácil del hilo de UI.Le permite realizar operaciones de fondo y publicar los resultados en el hilo de UI sin tener que manipular los hilos y / o los manipuladores.Es posible que desee realizar toda la computación en DOINBACKGROUND METHICH.BTW Force Cerrar o esperar es un comportamiento clásico para este tipo de temas. Buena suerte !!!

El procesamiento en un servicio aún puede hacer que su aplicación se bloquee.

La solución que debe estar buscando la implementación es ejecutar cualquier lógica que pueda atacar su actividad en un hilo separado.Esto incluye cosas como: actualizaciones / inserciones de la base de datos, comunicación de red y cualquier otra pieza de código de funcionamiento prolongado.

La SInctCask es un método conveniente para esto, ya que puede manipular la UI en ONPREEXECUTE y las funciones de ONPOSTEXECUTE.

Puede implementar una máscucha asínctastra directamente en su servicio como una subclase.

¡TOCE ESTE AYUDA! Saludos

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top