Хранение больших списков ArrayLists в SQLite - PullRequest
2 голосов
/ 18 октября 2011

Я занимаюсь разработкой приложения, в котором постоянно загружаю большой объем данных.

Данные в формате json, и я использую Gson для их десериализации. Сейчас я храню это в базе данных SQLite. И я должен рассчитать отношения и сохранить их в базе данных отношений. Однако это занимает слишком много времени.

Было бы гораздо удобнее сохранять объекты класса в БД.

Данные выглядят примерно так после десериализации:

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

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

Можно ли сохранить это проще, например, сделав их сериализуемыми? Как это может быть сделано?

1 Ответ

7 голосов
/ 18 октября 2011

Да, сериализация - лучшее решение в вашем случае, и она работает в 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;
  } 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...