RealmObject关系导致的大型Realm文件大小

时间:2016-07-31 16:27:16

标签: java json realm android gson

首先,感谢您制作出如此优秀的产品。境界很新鲜。

我的问题很简单。我使用的JSON看起来像这样:(把这个链接放在Postman或其他一些JSON漂亮打印机中)http://pokeapi.co/api/v2/pokemon/91

我正在使用GSON使用这个JSON并解析所有工作正常。但是,当我使用Realm#copyRealmOrUpdate将我从这个JSON创建的POJO复制到Realm时,文件大小变得荒谬。我确定它与下面的RealmList字段有关:

@PrimaryKey
private int id;
private int weight;
private int height;
private int order;
private int base_experience;
private boolean is_default;
private String name;
private String location_area_encounters;

private Sprite sprites;
private NamedResource species;

private RealmList<NamedResource> forms;
private RealmList<Stat> stats;
private RealmList<Ability> abilities;
private RealmList<Type> types;
private RealmList<Move> moves;

这些字段可能在RealmObjects中包含更多RealmList。我相信这是导致我的Realm文件不成比例增长的原因。如果我使用@Ignore注释那些RealmList字段,我的文件大小绝对很小(我没有看到它超过1MB)。但是,如果没有注释,它会很快达到10MB +范围。

我想到的解决方案:

1)使用Gson的TypeAdapter将RealmList中的RealmObjets转换为字符串。因此,不要持有其中包含String的RealmObject,只需抓住String即可。但是,TypeAdapter可能很难维护,因此我不想沿着这条路走下去。

2)使用@Ignore保留字段,并在需要时仅查询它们。但是,我想尽可能少地减少网络呼叫的数量,因为有时我使用的数据库可能很慢或只是停机。

3)使用其他移动数据库。我花了很多时间将Realm与我的代码集成在一起,我不想走这条路。

有什么想法吗?

0 个答案:

没有答案