Что является подходящей заменой устаревшего 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);

Я надеюсь, что это помогает