Alternativas al uso de onRetainNonConfigurationInstance

Tengo una aplicación que potencialmente rastrea una gran cantidad de datos durante el uso de la aplicación para un solo jugador, y mi aplicación puede permitir hasta 5 jugadores a la vez, lo que significa que esta gran cantidad de datos potencialmente se multiplica veces 5.

Escribo todos los datos a mi base de datos de SQLite cuando la actividad se destruye, y esto trabaja muy bien.

El problema se produce durante un cambio de orientación. Utilicé onRetainNonConfigurationInstance porque pensé que al menos podía confiar en él para los cambios de orientación, pero lo que he encontrado es que otras cosas que están pasando dentro de Android pueden borrar mis datos. Algunos ejemplos reportados por los usuarios:

- While the app was running, the user took a phone call. After returning to the app, the data was gone. - While the app was running, another user downloaded an update to a different app from the Market, and found the data gone after returning to the app. - While the app was running, another user started a different app (a music player), and returned to find the data gone. 

Sé que el uso de onRetainNonConfigurationInstance es el problema porque mi aplicación inicialmente escribió cada campo de datos individuales para cada jugador a un paquete, y mientras la aplicación se implementó de esa manera, no se encontraron problemas durante el transcurso de muchos meses.

Tan pronto como descubrí sobre onRetainNonConfigurationInstance y lo usé para mi implementación, empecé a recibir quejas.

Mi implementación es simple. Implico como sigue:

 @Override public Object onRetainNonConfigurationInstance() { return mPlayers; //array of player objects } 

Luego en onCreate, hago esto:

 mPlayers = (PlayerData [])getLastNonConfigurationInstance(); 

Dado que parece haber algún problema subyacente, ¿cuál es la mejor alternativa para retener grandes cantidades de datos de usuario a través de rotaciones de pantalla?

Gracias por cualquier ayuda!

Utilizar el Bundle: el problema con onRetainNonConfigurationInstance es que está vinculado al ciclo de vida del proceso de la aplicación, mientras que el Bundle se puede guardar y restaurar incluso si el proceso está completamente eliminado.

Si usted va a tener la gente yendo y haciendo cosas de memoria-intensivo que podría resultar en el proceso de matar a continuación, ir con el Bundle.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.