LoaderManager的范围是什么?

Ale*_*ood 16 android android-loadermanager android-loader

使用Loaders创建Android应用程序时,每个活动和片段都应该有自己的LoaderManager吗?或者应该只有一个LoaderManager应用程序拥有?最后,用于识别LoaderManager课堂外可见特定内容的"唯一ID"是什么?

具体来说,我无法确定应用程序中哪些类应该实现这些LoaderCallback<Cursor>方法(即每个片段应该实现这些回调,还是我应该有一个片段实现回调并查询结果,必要时将它们发送到其他片段/活动) ?

在此先感谢能帮助我的人!我在网上找不到太多关于此的信息.

Nik*_*kov 13

LoaderManger由活动管理和拥有.您可以在片段或活动中创建实际的加载器,它们将被相同的manged LoaderManager.唯一ID用于识别您在同一活动中可能拥有的不同装载程序.例如ID = 0 - > FooLoader,ID = 1 - > BarLoader等.

  • 嘿尼古拉,不确定你是否会看到这个......但是有一个问题.如果`Fragment`s是为了重复使用而设计的(即你不想为一个特定的父`Activity`设计`Fragment`),这是否意味着你不想拥有一个特定的` Activity`负责管理`Fragment`中的`Loader`?是否更好的做法是在`Fragment`中管理`Loader`s,以便它们可以在应用程序的生命周期中附加到多个`Activity`? (4认同)
  • `Activity`并不真正关心实际的加载器,只是确保它们被正确创建,初始化等.您应该在实际使用数据的位置实现`LoaderCallback <?>`.最有可能是你的'Fragment`类. (2认同)
  • 你不能真正改变`LoaderManager`,只是加载器.如果使它们独立于特定的片段/活动,则可以重用加载器.您不应该将内容分配给应用程序上下文,因为这意味着它永远不会被GC编辑(只要您的进程处于活动状态). (2认同)