内存-将大型数据集从活动传递到片段

时间:2018-08-26 18:46:42

标签: android

我有一个活动(MainActivity),它有4个片段(FragmentPagerAdapter),它们都需要相同的数据,从本地sqlite数据库(Room)加载的大量对象集合(加载数据可能需要几秒钟)。每个片段都显示相同集合,但已过滤,并且每个片段都使用setOffscreenPageLimit(3)加载到内存中,因此我不想对每个片段执行相同的查询。 / p>

目前,该集合已在MainActivity中异步获取,并作为可打包对象传递到片段的newInstance()中。 但这是一个好方法吗?我的数据集是可变的,如果我的集合太大而无法处理怎么办?可拆分数组列表可以处理这么大的值吗?

我想到的另一种解决方案是使用小型缓存机制,并使用匕首将我的模型/管理器(加载/包含数据集)作为单个实例注入4个片段中。

将庞大的数据集传递到各自片段的最佳实践/解决方案是什么?您是否会实例化片段并使用接口从活动中请求数据?

1 个答案:

答案 0 :(得分:1)

我相信,如果您有一个SQLite bbdd,则应该使用ContentProvider类。 在该片段中,您可以使用具有不同ID的LoaderManager.LoaderCallbacks>。

@Override
     public Loader <List <YourData >> onCreateLoader (int id, Bundle args) {
         return new YourFirstLoader (getActivity (), LOADER_ID);
     }

然后创建不同的加载器,这些加载器向内容提供者发出请求,这样它们将加载已过滤的数据。