我有一个 ListView 显示来自大型数据集的数据。List<Data>
数据由后台任务从网络检索并放入(即在内存中)。(想想带有投票更新的电子邮件收件箱。)
我的问题是如何将该数据传递给 ListFragment/ListView/ListAdapter 进行显示。
此列表不是永久的(因此不在内容提供程序中),但比活动的寿命更长(当活动尚未激活时,它会在后台更新)。
唯一的选择似乎是:
- 通过 Intent/Bundle 传递它。这需要在某种程度上进行序列化,这对于我的长列表来说非常昂贵,尤其是每次在后台更新列表时,我都必须设置一个新列表,这意味着整个列表都会重新序列化。
- 创建一个从程序中的任何位置提供列表的 Singleton,并从我的 ListAdaptor 访问 SingletonListProvider.getInstance().getList()。我不喜欢单例,我担心并发。
- 使用 ContentProvider。对于当前存在于内存中的简单 List<> 似乎有点过头了
还有其他选择吗?
似乎我对如何创建 Activity(在这种情况下为 ListFragment)几乎没有控制权,所以我不能只将 List 作为构造函数参数传递。