Использование 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}}

0 ответов

Другие вопросы по тегам