我正在构建一个Android应用程序,在启动活动中我将一个非常大的json文件(3.3 mb)解析为自定义对象,或者当没有更新时,我从序列化的bytearray中检索它。我处理一个对象与一个约500个对象的列表与子对象,列表等
现在我需要这些数据,或者我的其他活动中的一些数据。什么是最好的解决方案? 使用intent.putExtra或每次启动新活动时使用parceable进行序列化和反序列化似乎需要大量数据处理。这个处理是否比我想的要少,或者有没有办法使用你的解析类而不是销毁它所以你可以使用像
这样的东西Myclass.get(nrIneed).Mysubclass.getsomestring
? 这就是我在使用数据进行日志记录或在我的解析活动中使用它时的方法。
答案 0 :(得分: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
答案 1 :(得分:2)
对于可能消耗超过 1MB 的内存的对象,您不应使用Parcelable
。否则解析将失败(至少根据API级别8)。
但是,在您的情况下,我建议您将解析后的数据保存/组织到SQLite中,并从其他活动中查询它。这将有助于您的应用程序减少内存:)
你也可以创建一个静态引用你的对象,但由于它的大小,我不推荐你,因为那时你的应用程序将成为一个吸引人的目标,让android VM杀死 - 在内存不足的情况下运行时。
答案 2 :(得分:0)
我认为你不应该将你的数据用作一个大的Json文件。在第一次启动时,您应该将数据保存在数据库中,然后在需要创建/检索/更新/删除时仅使用此数据库。
如果你真的想使用你的JSON文件,那么你应该把它变成静态的(例如在你的应用程序单例中)。
希望这会对你有所帮助