Что является подходящей заменой устаревшего getSupportLoaderManager()?
Я узнал, что getSupportLoaderManager устарел. Но я хочу позвонить:
getSupportLoaderManager().initLoader(0, null, mRecipeLoaderManager);
Какой должна быть альтернатива этому звонку? Или я все еще могу использовать getSupportLoaderManager, не беспокоясь?
Ответы
Ответ 1
Как указано здесь: грузчики
"Начиная с Android P (API 28) загрузчики объявлены устаревшими. Рекомендуемая опция для загрузки данных при обработке жизненных циклов Activity и Fragment заключается в использовании комбинации ViewModels и LiveData".
Всякий раз, когда вы видите, что что-то устарело, переходите непосредственно на сайт разработчика и смотрите на класс или функцию, которую вы ищете, и они уже помечают это как deprecated
и будет лучшая альтернатива.
Ответ 2
Причина, по которой этот метод устарел, заключается в том, что загрузчики были отделены от своих исторических реализаций Fragment
и FragmentActivity
, чтобы жить в своей собственной библиотеке, которая вскоре станет необязательной зависимостью, и их реализация была переписана поверх компонентов архитектуры.
Несвязанный способ получения экземпляра LoaderManager
заключается в использовании статического метода фабрики:
LoaderManager.getInstance(T)
где T
является экземпляром как LifecycleOwner
и ViewModelStoreOwner
(основными реализациями являются FragmentActivity
и Fragment
).
Ответ 3
Вы можете использовать getSupportLoaderManager
если вам нужно: android.support.v4.app.LoaderManager.getInstance(this).initLoader(0, null, this).forceLoad();
Ответ 4
У меня также была эта проблема, и этот код решил ее для меня. LoaderManager.getInstance(this).initLoader(0,null,mRecipeLoaderManager);
Я надеюсь, что это помогает
Ответ 5
Здесь у вас есть краткое объяснение о том, как заменить Loaders на ViewModel:
https://developer.android.com/jetpack/arch/viewmodel#loaders
Графика там понятна, я думаю:
![enter image description here]()
![enter image description here]()
Для более подробного объяснения вы можете прочитать этот пост в блоге:
https://medium.com/google-developers/lifecycle-aware-data-loading-with-android-architecture-components-f95484159de4