2011-05-20 24 views
8

Me doy cuenta de que mis controladores de vista no reciben sus métodos didReceiveMemoryWarning llamados cuando mi aplicación está en el estado de fondo en el simulador de iPad. Más específicamente, veo la llamada al applicationDidEnterBackground en mis registros, luego presiono el botón "Simular advertencia de memoria", y luego noto una peculiar falta de llamadas didReceiveMemoryWarning.No obtengo didReceiveMemoryWarning cuando la aplicación está en segundo plano

Sin embargo, cuando devuelvo la aplicación al primer plano, de repente recibo la llamada didReceiveMemoryWarning, como si hubiera estado en cola.

Lo que estoy confundido aquí es si mi aplicación está realmente en segundo plano, o si simplemente se suspende. ¿Hay alguna manera de decir en el simulador?

Además, si aún no está suspendido, y realmente está solo en segundo plano, entonces me parece una tontería no poder procesar didReceiveMemoryWarning. Porque eso significaría que solo la aplicación en primer plano puede procesar las advertencias de memoria para liberar espacio, lo que es por supuesto extraño dado que la aplicación de primer plano podría ser solo una de las posiblemente docenas de aplicaciones en ejecución, y tendría mucho más sentido si todos podrían liberar memoria.

De todos modos, las preguntas principales son: ¿por qué no obtengo didReceiveMemoryWarning en el estado de fondo? Y también, ¿estoy realmente suspendido? ¿Y cómo lo digo?

Respuesta

8

Si no inició una tarea de fondo, o realiza VOIP, seguimiento de ubicación o audio en segundo plano, entonces su aplicación se suspende después de la aplicaciónDidEnterBackground. No recibirá ninguna notificación. Se guardan las notificaciones (incluso las que se producen después de que se suspendió la aplicación) y se envían a la aplicación cuando la aplicación vuelve a estar en primer plano.

+0

+1, sin embargo, un enlace a la fuente oficial sería bueno ... –

+0

Por favor, agrega una fuente. En mi experiencia personal, este no es el caso y las advertencias de memoria se ven en segundo plano. – prolfe

0

No creo que sea el caso. Puedo acceder al código didReceiveMemoryWarning mientras estaba en segundo plano. Una vez que el sistema genera una señal de memoria baja que como un buen ciudadano, deberíamos liberar la memoria. Esto también ayuda a nuestra aplicación a terminar con el sistema.

Cuestiones relacionadas