gpt4 book ai didi

java - 在Android开发中使用Parcelable、Realm和GSON

转载 作者:行者123 更新时间:2023-12-02 03:05:29 26 4
gpt4 key购买 nike

Android开发中,在一个项目中使用Parcelable、Realm、GSON可以吗?我只是想知道如何同时实现它,因为每个库/框架在制作 POJO 时都有不同的注释。另外一个是Realm和Parcelable都持久化数据,那么我需要同时实现吗?

最佳答案

GSON 过去对 Realm 有一些奇怪的地方,需要以下配置

Gson gson = new GsonBuilder()
.setExclusionStrategies(new ExclusionStrategy() {
@Override
public boolean shouldSkipField(FieldAttributes f) {
return f.getDeclaringClass().equals(RealmObject.class);
}

@Override
public boolean shouldSkipClass(Class<?> clazz) {
return false;
}
})
.create();
<小时/>

GSON 使用字段反射从对象读取数据,这意味着在托管 RealmObject 上,您的字段将为 null 值。

这是因为 GSON 也不提供使用访问器获取数据的选项,但 Realm 代理不会将数据复制到内存。

如果您需要一个可以通过带有 @Body 注解的 Retrofit 发送的对象,并且是托管 RealmObject,则当您需要执行 apiService.sendObject(realm.copyFromRealm(myObject)) 时;.

<小时/>在大多数情况下, Parcelable 对于 RealmObject 来说并不是必需的,因为由 Realm 管理的任何对象都已被持久化,并且只要您拥有其对象,就可以随时在任何地方使用主键。

但是,如果您需要制作独立的可修改数据副本,并且您打算直接使用该类的非托管实例来构建要保存的对象,那么您可以轻松创建 Parcelable类使用 Parceler图书馆。

<小时/><小时/>

简而言之:

  • RealmObjects 可以使用 Parceler 轻松持久化为 Parcelable,但您通常不需要它,您只需在 Activity 之间发送主键,而不是整个对象
  • GSON 不能很好地处理托管对象,因为 GSON is kinda dumb所以你需要先在内存中进行复制
<小时/><小时/>

就个人而言,我更喜欢将 API 响应和 RealmModel 分开,如果您依赖于映射到更优化的架构,会更容易。

关于java - 在Android开发中使用Parcelable、Realm和GSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41808783/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com