我在Android Studio中获得了不赞成使用getSupportLoaderManager的信息。但我想打电话:
getSupportLoaderManager().initLoader(0, null, mRecipeLoaderManager);
该通话的替代方法应该是什么? 还是可以不用担心使用getSupportLoaderManager?
答案 0 :(得分:8)
如此处所述:Loaders
“从Android P(API 28)开始不推荐使用加载器。在处理Activity和Fragment生命周期时,处理加载数据的推荐选项是结合使用ViewModels和LiveData。”
每当您看到不推荐使用的东西时,请直接访问开发人员站点并查看所需的类或函数,他们已经将其标记为deprecated
,并且会有更好的选择。
答案 1 :(得分:7)
不建议使用此方法的原因是,加载器已脱离其历史记录Fragment
和FragmentActivity
的实现,以便生活在自己的库中,该库将很快成为可选的依赖项,及其实现已在体系结构组件的顶部进行了重写。
检索LoaderManager
实例的非捆绑方式是使用静态工厂方法:
其中T
是LifecycleOwner
和ViewModelStoreOwner
的实例(主要实现是FragmentActivity
和Fragment
)。
答案 2 :(得分:6)
如果需要,您仍然可以使用getSupportLoaderManager
:
android.support.v4.app.LoaderManager.getInstance(this).initLoader(0, null, this).forceLoad();
答案 3 :(得分:3)
我发生了同样的问题!
getSupportLoaderManger()
可以替换为LoaderManager.getInstance(this)
,其他代码保持不变。因此,最终您的代码将变为:
LoaderManager.getInstance(this).initLoader(0, null, mRecipeLoaderManager);
您可以参考Android官方文档: https://developer.android.com/reference/androidx/fragment/app/FragmentActivity#getSupportLoaderManager()
答案 4 :(得分:2)
这里您有一个简短的说明,说明如何用ViewModel替换Loader:
https://developer.android.com/jetpack/arch/viewmodel#loaders
我认为图形是不言自明的:
有关更详尽的解释,请阅读此博客文章:
答案 5 :(得分:2)
我也遇到了这个问题,这段代码为我解决了问题data[j][i+1] = expDelivery;
我希望对您有帮助