Ho un'attività principale A che utilizza un CursorLoader per interrogare un DB. Questo Creo nell'attività onCreate() metodo:Perché CursorLoader onLoaderReset() viene chiamato dopo la rotazione del dispositivo?
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
getSupportLoaderManager().initLoader(LOADER_MEASUREMENTS, null, A.this);
}
esercizi A implementa anche i 3 callback per l'CursorLoader:
public Loader<Cursor> onCreateLoader(int loaderId, Bundle args)
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor)
public void onLoaderReset(Loader<Cursor> loader)
Quando ruoto dispositivo, vedo i metodi del ciclo di vita corretti eseguire:
A.onPause()
A.onStop()
A.onDestroy()
A.onCreate() <-- re-connect to existing loader, onCreateLoader() not called
A.onLoadFinished()
A.onStart()
A.onResume()
Quindi apro una sotto-attività B e ruoto il mio dispositivo. Quando finisco B e ritorno all'attività A vedo il seguente periodo:
B.onPause()
A.onLoaderReset() <- why does this run?
A.onDestroy()
A.onCreate()
A.onCreateLoader() <- now runs as loader is null
A.onStart()
...
Perché il mio ripristino loader perché avevo attività B aperto e fatto una rotazione dispositivo? Giusto per aggiungere che l'attività B non ha nulla a che fare con il DB o con il CursorLoader.
[Questa domanda] (http://stackoverflow.com/questions/15897547/loader-unable-to-retain-itself-during-certain-configuration-change?lq=1) e le domande collegate sono correlate. Forse puoi trovare qualcosa che potrebbe aiutarti. –
Grazie George - questa domanda tratta esattamente lo stesso problema che sto avendo. Sembra che potrebbe essere dovuto a Support Loader Manager. – MickeyR
Questo [collegamento] (https://code.google.com/p/android/issues/detail?id=183783) afferma che questo è/sarà corretto in v24. – MickeyR