LoaderManager 的作用域是啥?

Posted

技术标签:

【中文标题】LoaderManager 的作用域是啥?【英文标题】:What is the scope of LoaderManager?LoaderManager 的作用域是什么? 【发布时间】:2012-01-27 16:14:36 【问题描述】:

使用 Loaders 创建 android 应用程序时,每个 Activity 和 Fragment 是否应该有自己的LoaderManager?还是应该只有一个LoaderManager 应用程序拥有?最后,用于识别特定LoaderManagers 的“唯一 ID”在课堂之外是否可见?

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

提前感谢任何可以帮助我的人!我在网上找不到太多关于此的信息。

【问题讨论】:

好问题,感谢您的信息! 我同意...非常感谢! 【参考方案1】:

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

【讨论】:

感谢尼古拉的帮助! 嘿 Nikolay,不确定你是否会看到这个……但有一个问题。如果Fragments 旨在为重复使用而设计(即您不想为单个特定父级Activity 设计Fragment),这是否意味着您不想拥有特定的@ 987654326@ 负责管理Loader 中的Fragment?在Fragment 中管理Loaders 是不是更好的做法,以便它们可以在应用程序的生命周期中附加到多个Activitys? Activity 并不真正关心实际的加载器,只是确保它们被正确地创建、初始化等。您应该在实际使用数据的地方实现LoaderCallback<?>。很可能是您的Fragment 课程。 你不能真正改变LoaderManager,只能改变加载器。如果您使它们独立于特定的片段/活动,您可以重用加载器。您不应该将东西分配给应用程序上下文,因为这意味着它永远不会被 GC-ed(只要您的进程还活着)。 这是否意味着您应该有一个全局 ID 管理器来保存所有加载程序,因为片段的多个实例可以用于多个/单个活动?

以上是关于LoaderManager 的作用域是啥?的主要内容,如果未能解决你的问题,请参考以下文章

python里面变量作用域是啥?

如何通过 c:set 将参数传递给 jsp:include? JSP中变量​​的作用域是啥?

java 定义变量的作用是啥?

变量的四种作用域是?

☀️作用域是什么?作用域链又是什么?你怎么理解?

☀️作用域是什么?作用域链又是什么?你怎么理解?