在整个Android应用程序中使用多个静态ArrayList

在整个Android应用程序中使用多个静态ArrayList,android,sqlite,arraylist,sharedpreferences,parcelable,Android,Sqlite,Arraylist,Sharedpreferences,Parcelable,我正在开发我的第一个android应用程序,希望在这里得到一些提示 我从一个url获得一个JSONObject,然后将在ArrayList中解析它。该列表将在多个选项卡中使用,并根据需要对选项卡进行筛选。用户可以修改这些列表中的对象,并且更改应与列表同步 因此,为了加快加载时间,我创建了一个类DataHolder,作为一个包含7个arraylist的单例,基于一个JSONObject,以不同的排序顺序和过滤条件。这些列表中的对象是来自原始列表的引用。填充列表效果很好 这些列表将用于不同的片段和活

我正在开发我的第一个android应用程序,希望在这里得到一些提示

我从一个url获得一个
JSONObject
,然后将在
ArrayList
中解析它。该列表将在多个选项卡中使用,并根据需要对选项卡进行筛选。用户可以修改这些列表中的对象,并且更改应与列表同步

因此,为了加快加载时间,我创建了一个类
DataHolder
,作为一个包含7个arraylist的单例,基于一个
JSONObject
,以不同的排序顺序和过滤条件。这些列表中的对象是来自原始列表的引用。填充列表效果很好

这些列表将用于不同的片段和活动

现在的问题是:第二个活动包含带有片段的选项卡。初始化片段后。。。
数据持有者中的所有ArrayList计数为0!我必须将
JSONObject
保存在
SharedReferences
中,然后再次填充它以获得
列表。我无法再次加载url,因为它会大大降低应用程序的速度,而且使用
SharedReferences
不是一个选项(我认为),因为需要同步
列表。我已经读到使用静态变量不是最佳解决方案,但它似乎是最简单的方法:(


我能做些什么来解决这个问题?我应该使用
可包裹对象
并始终传递
列表
?或者使用
SQLite
?或者有其他方法吗?

使用静态列表进行本地操作。当用户从该屏幕出来时(活动)将更改保存到数据库中。

SQLite方法无疑是正确的方法,imho

您应该使用内部数据库来存储这些列表:

不清楚您是如何做到这一点的-您的
数据持有者是POJO还是扩展了
活动
,还是第一个
活动
的内部静态类?如果是第二个
活动
中的任何一个,那么这绝对不是您应该做的。一个
活动
不应该公开静态方法或成员变量或
活动的内部类
。创建一个
应用程序
类,并将数据放入实例中(您可以在
onCreate()中分配实例
)它也需要在清单中声明。我的数据持有者是POJO。我测试了扩展应用程序,结果相同。使用片段后,列表为0:(.如果一个
活动只在“本地”使用,为什么需要使用
静态
成员呢?我现在考虑的两个主要选项是使用sqllite或sharedprefs来保存列表。如果用户做出更改,我需要同步更新我的所有列表视图。使用sqllite可能更干净。我会的试试这个,谢谢!