Android 使用可序列化或可分组传递是一种有效的解决方案吗?

Android 使用可序列化或可分组传递是一种有效的解决方案吗?,android,serializable,Android,Serializable,我正在构建一个android应用程序,在启动活动中,我将一个相当大的json文件(3.3MB)解析为自定义对象,或者在没有更新时,我从序列化的bytearray中检索它。我正在处理一个包含500个对象的对象列表,其中包含子对象、列表等 现在我需要这些数据,或者在我的其他活动中需要一些数据。这方面的最佳解决方案是什么? 每次启动新活动时,使用intent.putExtra或使用parceable进行序列化和反序列化似乎需要大量的数据处理。这种处理是否比我想象的要少,或者是否有一种方法可以使用解析类

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

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

Myclass.get(nrIneed).Mysubclass.getsomestring
??
这就是我在解析活动中使用数据进行日志记录或其他操作时的做法。

您可以使用
应用程序
类来存储此数据,并且可以在所有
活动中使用它

public class BusinessClass extends Application 
{     
     public ParsedData parsedData = new ParsedData();
}
然后使用以下代码在任何活动中调用它

BusinessClass appState = ((BusinessClass)getApplicationContext());
appState.parsedData.getData();
更多信息


您可以使用
应用程序
类来存储此数据,并且可以在所有
活动中使用它

public class BusinessClass extends Application 
{     
     public ParsedData parsedData = new ParsedData();
}
然后使用以下代码在任何活动中调用它

BusinessClass appState = ((BusinessClass)getApplicationContext());
appState.parsedData.getData();
更多信息


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

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


希望这会对您有所帮助

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

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


希望这将对您有所帮助

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

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


您也可以创建对对象的静态引用,但由于其大小巨大,我不推荐您,因为这样,当在内存不足的情况下运行时,你的应用程序将成为android VM的一个吸引人的目标。

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

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


你也可以创建一个对你的对象的静态引用,但是由于它的巨大尺寸,我不推荐你,因为这样你的应用程序就会成为android VM的一个诱人的目标——在内存不足的情况下运行。

Hey@Jasper你是在维护一个500个对象的数组吗?为了避免大量的处理,您可以将500个对象的数组设置为静态:)嘿@Jasper您正在维护500个对象的数组吗?为了避免大量处理,您可以将500个对象的数组设置为静态:)谢谢,效果很好。谁在乎呢:这是一个有用的教程:谢谢,效果不错。谁在乎呢:这是一个有用的教程: