2011-03-04 7 views
6

rotación que tienen una activity con en el que hay una async task que va a hacer un poco de materia descarga. En el momento del downlaoding, mostrará un l oading dialog.
Mi problema es que funcionó bien para mí cuando lo hacía solo en one orentiaon. Pero cuando rotate en el momento de la descarga, se muestra window leaked y se colgará en la dialog.cancel en mi post Excute.
Desde mi estudio en él más comprendía que, debido al change in the context cuando el dispositivo es rotated.
A continuación, cuando device es rotated, activity será recreated, por lo que context será changed.
Pero he creado el cuadro de diálogo con una antigua y que wasn't the current context. Entonces cuando lo cancelo muestra el error
¿Cuál es la solución para esto, cualquier idea frnds.
mí usando honeycomb, me trataron pero con fragment pero ni conseguir una buena muestra de ello. Yo ahora tratando sobre todo de que,
si alguien me puede dar algunos enlaces para que sea granCargando diálogo mientras que el dispositivo

Respuesta

3

En primer lugar: abrir el diálogo usando el método showDialog (there are a lot of examples in the official documentation). Si lo haces, la actividad se ocupará de descartar el diálogo sobre destrucción y volver a mostrarlo una vez que se haya recreado la actividad.

también ... si el cuadro de diálogo muestra una barra de progreso (no una rueda), tendrá que actualizar el progreso del diálogo después de los cambios de orientación. Para hacerlo, recomiendo usar el onRetainNonConfigurationInstance para devolver el estado actual del diálogo y/o la actividad en sí. Luego, puede usar getLastNonConfigurationInstance para recuperar ese estado. Google acerca de esos dos métodos si quiere ver ejemplos.

Otra cosa a tener en cuenta: si está actualizando el estado del un diálogo/o cualquier otro elemento de la interfaz de usuario de la AsyncTask, debe tener en cuenta que después de que se recrea la actividad, el AsyncTask puede estar apuntando a la equivocada Referencias de UI Para manejar esto, puede crear una clase de proxy (patrón de diseño Proxy) para separar las notificaciones de progreso AsyncTask de los elementos actuales de la interfaz de usuario.

+0

Gracias ** ** Cristian para contestar. Yo usé [ProgressDialog] (http://developer.android.com/guide/topics/ui/dialogs.html#ProgressDialog) pero me chocó mientras rotaba. – Jithin

+0

¿Qué es este ** Patrón de diseño de proxy **. Su sonido es interesante. No sé nada al respecto. puede proporcionar algunos enlaces para ese – Jithin

+0

Eche un vistazo al código fuente de la aplicación [iosched] (http://code.google.com/p/iosched/). Tiene un buen ejemplo de cómo usar 'onRetainNonConfigurationInstance',' getLastNonConfigurationInstance', así como también el patrón de diseño de proxy. – Cristian

-1

Esto sucede porque la actividad recrear cuando cambia la orientación del dispositivo. Para deshabilitar esto, puede configurar una actividad como esta.

<activity .... android:configChanges="orientation|keyboard" 
... 
> 

Android: Dialog etc restore after rotation changed

+0

Esto no es recomendable. Ver la otra respuesta. –

Cuestiones relacionadas