2011-04-01 14 views
7

Como dice el título, tengo un UncaughtExceptionHandler configurado en mi clase de aplicación personalizada que se configura como la predeterminada cuando se inicia mi aplicación.Android UncaughtExceptionHandler que crea una instancia de AlertDialog breaks

Sin embargo, si bien no en la documentación He leído que no se puede crear una instancia de un Dialog usando MyApplication.this o getApplicationContext(). Cuando trato de hacerlo, aparece un

WindowManager $ BadTokenException ...

necesito una alternativa. He pensado en hacer una nueva actividad para compensar esto, pero preferiría que fuera un AlertDialog.

¿Hay alguna forma de que pueda obtener un contexto válido para mi UncaughtExceptionHandler dentro de la clase MyApplication?

Respuesta

8

He leído que no se puede crear una instancia de diálogo usando MyApplication.this o getApplicationContext

correcta. El contexto de la Aplicación no es especialmente útil para construir UI.

He pensado en hacer una nueva actividad para compensar esto, pero preferiría que fuera un AlertDialog.

Un AlertDialog es imposible en este caso. Para empezar, solo una actividad puede abrir un cuadro de diálogo y ninguna de sus actividades puede estar ejecutándose (p. Ej., Bloquearse en un servicio en segundo plano) y ser válida (p. Ej., Usted tuvo una, pero fue la que se estrelló).

EDIT: párrafo anterior fija para aclarar la confusión

+0

puede sugerir una alternativa? Quiero que los clientes que prueban este producto puedan informar sus comentarios si ocurre una excepción. Lo que estoy buscando es un gancho global de excepción no detectada que nos pregunte si quieren enviarnos un informe. –

+4

@Tom Fobear: Perdón, me acabo de dar cuenta de que fui un poco exagerado en mi respuesta. Puedes comenzar una actividad muy bien; simplemente no puede abrir su propio diálogo. Use una actividad con temas de diálogo, y debería estar bien. Sin embargo, tenga en cuenta que sus hilos de fondo deben tener su propio manejador de excepciones silenciosas y no detectadas, ya que no quiere que aparezcan actividades en el medio de la nada. – CommonsWare

+0

Eso es genial, eso es casi toda la información que necesito. Gracias. –

Cuestiones relacionadas