android - 将大型 ArrayList 存储到 SQLite

标签 android sqlite serialization

我正在开发一个不断下载大量数据的应用程序。

json格式的数据,我用Gson反序列化。到目前为止,我将其存储在 SQLite 数据库中。而且我必须计算关系并将它们存储到关系数据库中。然而,这需要太多时间。

类对象保存到db会方便很多。

反序列化后的数据看起来像这样:

Class A{
private String name;
private List<B> subItems;
}

Class B{
private String name;
private List<C> subItems
}

我能否以更简单的方式坚持这一点,例如让它们可序列化?如何才能做到这一点?

最佳答案

是的,序列化对你来说是一个更好的解决方案,它适用于 Android。以下示例摘自 http://www.jondev.net/articles/Android_Serialization_Example_%28Java%29

序列化方式:

  public static byte[] serializeObject(Object o) { 
    ByteArrayOutputStream bos = new ByteArrayOutputStream(); 

    try { 
      ObjectOutput out = new ObjectOutputStream(bos); 
      out.writeObject(o); 
      out.close(); 

      // Get the bytes of the serialized object 
      byte[] buf = bos.toByteArray(); 

      return buf; 
    } catch(IOException ioe) { 
      Log.e("serializeObject", "error", ioe); 

      return null;
    } 

反序列化方法:

  public static Object deserializeObject(byte[] b) { 
    try { 
      ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(b)); 
      Object object = in.readObject(); 
      in.close(); 

      return object; 
    } catch(ClassNotFoundException cnfe) { 
      Log.e("deserializeObject", "class not found error", cnfe); 

      return null; 
    } catch(IOException ioe) { 
      Log.e("deserializeObject", "io error", ioe); 

      return null;
  } 

关于android - 将大型 ArrayList 存储到 SQLite,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7803762/

相关文章:

Android - 在本地存储大量数据,xml/json 或 SQLite?

python - 如何在 Python 中使用 SQLite 3 的 Vacuum 命令

android - 如何将 List<> 写入包裹

android - 用Android中的 fragment 问题替换线性布局

java - 使用 ProGuard 后应用程序在移动设备上崩溃

sql - 从具有相同用户名的另一个表更新表值

java - 类的序列化、演化

c# - 用于二进制数据的类似 FileHelpers 的数据导入/导出实用程序?

java - 如何反序列化 OSGi 中的实现类

java - 从 Java 迁移到 Android