What is the appropriate replacement of deprecated getSupportLoaderManager()?

前端 未结 6 2157
你的背包
你的背包 2020-12-08 07:46

I came to know that getSupportLoaderManager is deprecated. But I want to call:

getSupportLoaderManager().initLoader(0, null, mRecipeLoaderManager);


        
相关标签:
6条回答
  • 2020-12-08 08:18

    I also had this issue too and this code solved it for me LoaderManager.getInstance(this).initLoader(0,null,mRecipeLoaderManager);

    i hope it helps

    0 讨论(0)
  • 2020-12-08 08:29

    The reason why this method is deprecated is because Loaders have been unbundled from their historical Fragment and FragmentActivity implementations in order to live in their own library that will soon be an optional dependency, and their implementation has been rewritten on top of architecture components.

    The unbundled way of retrieving a LoaderManager instance is to use the static factory method:

    LoaderManager.getInstance(T)

    where T is an instance of both LifecycleOwner and ViewModelStoreOwner (the main implementations being FragmentActivity and Fragment).

    0 讨论(0)
  • 2020-12-08 08:29

    You can still use getSupportLoaderManager if you need to as: android.support.v4.app.LoaderManager.getInstance(this).initLoader(0, null, this).forceLoad();

    0 讨论(0)
  • 2020-12-08 08:31

    As stated here: Loaders

    "Loaders have been deprecated as of Android P (API 28). The recommended option for dealing with loading data while handling the Activity and Fragment lifecycles is to use a combination of ViewModels and LiveData."

    Whenever you see something is deprecated, go directly to the developer api reference site and review the class or function for which you're looking and if there is an equivalent alternative.

    0 讨论(0)
  • 2020-12-08 08:38

    Here you have a brief explanation on how to replace Loaders with ViewModel:

    https://developer.android.com/jetpack/arch/viewmodel#loaders

    The graphics there are self-explanatory, I think:

    For a more thorough explanation, you can read this blog post:

    https://medium.com/google-developers/lifecycle-aware-data-loading-with-android-architecture-components-f95484159de4

    0 讨论(0)
  • 2020-12-08 08:39

    Same problem occurred with me!

    getSupportLoaderManger() can be replaced by LoaderManager.getInstance(this) and the further code remains the same. So, finally your code will become:

    LoaderManager.getInstance(this).initLoader(0, null, mRecipeLoaderManager);
    

    You can refer Android official documentation: https://developer.android.com/reference/androidx/fragment/app/FragmentActivity#getSupportLoaderManager()

    0 讨论(0)
提交回复
热议问题