1

我正在构建一个 android 应用程序,在启动活动中,我将一个非常大的 json 文件(3.3 mb)解析为自定义对象,或者当没有更新时,我从序列化的字节数组中检索它。我正在处理一个包含大约 500 个包含子对象、列表等对象的列表的对象。

现在我需要这些数据,或者在我的其他活动中使用其中的一些。什么是最好的解决方案?每次开始新活动时,使用 intent.putExtra 或使用 parceable 似乎需要进行大量数据处理来序列化和反序列化。这个处理比我想象的要少,还是有办法使用你的解析类而不破坏它,这样你就可以使用类似的东西

Myclass.get(nrIneed).Mysubclass.getsomestring

? 这就是我在使用数据进行日志记录或解析活动中的某些内容时所做的。

4

3 回答 3

2

您可以使用Application类来存储这些数据,并且可以在所有Activity

public class BusinessClass extends Application 
{     
     public ParsedData parsedData = new ParsedData();
}

然后使用以下代码在任何活动中调用它

BusinessClass appState = ((BusinessClass)getApplicationContext());
appState.parsedData.getData();

欲了解更多信息

http://developer.android.com/reference/android/app/Application.html

于 2012-07-20T08:49:26.040 回答
2

您不应该使用Parcelable可能消耗内存超过约1MB的对象。否则解析将失败(至少按照 API 级别 8)。

但是,在您的情况下,我建议您将解析的数据保存/组织到 SQLite 并从其他活动中查询。这将帮助您的应用程序消耗更少的内存:)

您也可以创建对您的对象的静态引用,但由于它的大小很大,我不建议您这样做,因为这样您的应用程序将成为 android VM 杀死的有吸引力的目标 - 在内存不足的情况下运行时。

于 2012-07-20T08:51:04.907 回答
0

我认为您不应该将您的数据用作大型 Json 文件。在第一次启动时,您应该将数据保存在数据库中,然后仅在需要创建/检索/更新/删除时使用此数据库。

如果您真的想使用您的 JSON 文件,那么您应该将其设为静态(例如在您的应用程序单例中)。

希望对你有帮助

于 2012-07-20T08:50:42.690 回答