Использование DrawerLayout заставляет использовать библиотеку поддержки для LoaderManager?
У моего приложения есть некоторые действия, нет фрагментов, DrawerLayout, и все действия используют Loaders для получения доступа к базе данных через ContentProvider. Проблема, с которой я столкнулся в двух моих действиях (а не в других), аналогична той, которая описана в onCreateLoader и не вызывается при изменении ориентации: при изменении ориентации устройства вызывается getLoaderManager(). InitLoader() в onResume() но это приводит к обратному вызову onLoadFinished() только в одной из двух ориентаций (начальной). Повторные изменения ориентации всегда имеют одинаковый эффект.
Отличие от проблемы в onCreateLoader, не вызываемой при изменении ориентации, состоит в том, что я не использую фрагменты с FragmentActivity из библиотеки поддержки. Но я также должен использовать библиотеку поддержки для DrawerLayout.
Всегда ли использование какой-либо части библиотеки поддержки обеспечивает использование LoaderManager.LoaderCallbacks также из библиотеки поддержки? Если да, где я могу найти эту информацию?
Используя LoaderManager.enableDebugLogging (true), я получаю следующие журналы: Первая загрузка действия:
initLoader in LoaderManager{4221a5a0 in RepairInfo{422051c0}}: args=null
Starting: LoaderInfo{4221aab8 #12 : CursorLoader{4221abc0}}
Created new loader LoaderInfo{4221aab8 #12 : CursorLoader{4221abc0}}
restartLoader in LoaderManager{4221a5a0 in RepairInfo{422051c0}}: args=Bundle[{PartTypeDbId=1, BikeDbId=23}]
Starting: LoaderInfo{4221c128 #11 : CursorLoader{4221cee8}}
onLoadComplete: LoaderInfo{4221aab8 #12 : CursorLoader{4221abc0}}
onLoadFinished in CursorLoader{4221abc0 id=12}: CursorWrapperInner{42224a58}
onLoadComplete: LoaderInfo{4221c128 #11 : CursorLoader{4221cee8}}
onLoadFinished in CursorLoader{4221cee8 id=11}: CursorWrapperInner{42224b50}
Stopping in LoaderManager{4219c730 in BikeDescription{41e4f930}}
Stopping: LoaderInfo{4219cfc0 #3 : CursorLoader{4219dc90}}
Stopping: LoaderInfo{421a1b88 #2 : CursorLoader{421a2b50}}
Изменяя ориентацию устройства, я получаю этот журнал - без какого-либо onLoadComplete и, следовательно, без отображения данных базы данных:
Retaining in LoaderManager{4221a5a0 in RepairInfo{422051c0}}
Retaining: LoaderInfo{4221aab8 #12 : CursorLoader{4221abc0}}
Retaining: LoaderInfo{4221c128 #11 : CursorLoader{4221cee8}}
Destroying Inactive in LoaderManager{4221a5a0 in RepairInfo{422051c0}}
Finished Retaining in LoaderManager{4221a5a0 in RepairInfo{4223a8d8}}
Finished Retaining: LoaderInfo{4221aab8 #12 : CursorLoader{4221abc0}}
Stopping: LoaderInfo{4221aab8 #12 : CursorLoader{4221abc0}}
Finished Retaining: LoaderInfo{4221c128 #11 : CursorLoader{4221cee8}}
Stopping: LoaderInfo{4221c128 #11 : CursorLoader{4221cee8}}
initLoader in LoaderManager{4221a5a0 in RepairInfo{4223a8d8}}: args=null
Re-using existing loader LoaderInfo{4221aab8 #12 : CursorLoader{4221abc0}}
restartLoader in LoaderManager{4221a5a0 in RepairInfo{4223a8d8}}: args=Bundle[{PartTypeDbId=1, BikeDbId=23}]
Making last loader inactive: LoaderInfo{4221c128 #11 : CursorLoader{4221cee8}}
restartLoader in LoaderManager{4221a5a0 in RepairInfo{4223a8d8}}: args=Bundle[{PartTypeDbId=1, BikeDbId=23}]
Current loader is stopped; replacing
Destroying: LoaderInfo{4224ffe8 #11 : CursorLoader{422501e0}}
Изменение ориентации устройства обратно к его первоначальной ориентации приводит к появлению предупреждения, но имеет onLoadComplete и отображает все данные, такие как первый вызов:
Retaining in LoaderManager{4221a5a0 in RepairInfo{4223a8d8}}
Called doRetain when not started: LoaderManager{4221a5a0 in RepairInfo{4223a8d8}}
java.lang.RuntimeException: here
at android.app.LoaderManagerImpl.doRetain(LoaderManager.java:795)
at android.app.Activity.performStop(Activity.java:5359)
at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3480)
at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3539)
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3739)
at android.app.ActivityThread.access$900(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1211)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5146)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:732)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:566)
at dalvik.system.NativeStart.main(Native Method)
Destroying Active in LoaderManager{4221a5a0 in RepairInfo{4223a8d8}}
Destroying: LoaderInfo{4221aab8 #12 : CursorLoader{4221abc0}}
Reseting: LoaderInfo{4221aab8 #12 : CursorLoader{4221abc0}}
Destroying: LoaderInfo{42262f28 #11 : CursorLoader{42263120}}
Destroying Inactive in LoaderManager{4221a5a0 in RepairInfo{4223a8d8}}
Destroying: LoaderInfo{4221c128 #11 : CursorLoader{4221cee8}}
Destroying Active in LoaderManager{4221a5a0 in RepairInfo{4223a8d8}}
Destroying Inactive in LoaderManager{4221a5a0 in RepairInfo{4223a8d8}}
initLoader in LoaderManager{42280020 in RepairInfo{4226cf08}}: args=null
Starting: LoaderInfo{42280538 #12 : CursorLoader{42280580}}
Created new loader LoaderInfo{42280538 #12 : CursorLoader{42280580}}
restartLoader in LoaderManager{42280020 in RepairInfo{4226cf08}}: args=Bundle[{PartTypeDbId=1, BikeDbId=23}]
Starting: LoaderInfo{42281d30 #11 : CursorLoader{42281fe8}}
onLoadComplete: LoaderInfo{42281d30 #11 : CursorLoader{42281fe8}}
onLoadFinished in CursorLoader{42281fe8 id=11}: CursorWrapperInner{42284950}
onLoadComplete: LoaderInfo{42280538 #12 : CursorLoader{42280580}}
onLoadFinished in CursorLoader{42280580 id=12}: CursorWrapperInner{42284a48}
restartLoader in LoaderManager{42280020 in RepairInfo{4226cf08}}: args=Bundle[{PartTypeDbId=1, BikeDbId=23}]
Making last loader inactive: LoaderInfo{42281d30 #11 : CursorLoader{42281fe8}}
Starting: LoaderInfo{4229d218 #11 : CursorLoader{4229d410}}
onLoadComplete: LoaderInfo{4229d218 #11 : CursorLoader{4229d410}}
onLoadFinished in CursorLoader{4229d410 id=11}: CursorWrapperInner{4229ecc0}
Destroying: LoaderInfo{42281d30 #11 : CursorLoader{42281fe8}}