通过Realm.io(Android)使用parceler(@Parcel)

通过Realm.io(Android)使用parceler(@Parcel),android,parcelable,serializable,realm,parceler,Android,Parcelable,Serializable,Realm,Parceler,我有以下生成错误的代码:error:Parceler:找不到io.realm.realm的io.realm.realm类型的读/写生成器 没有扩展RealmObject,它工作得很好,但是我想使用Realm轻松地将其放入数据库。有没有办法去掉RealmObject字段,只使用@Parcel的基本pojo字段 @Parcel public class Feed extends RealmObject{ int id; public String text; public S

我有以下生成错误的代码:
error:Parceler:找不到io.realm.realm的io.realm.realm类型的读/写生成器

没有
扩展RealmObject
,它工作得很好,但是我想使用Realm轻松地将其放入数据库。有没有办法去掉RealmObject字段,只使用@Parcel的基本pojo字段

@Parcel
public class Feed extends RealmObject{
    int id;
    public String text;
    public String time_created;
    String time_modified;
    int comments_count;
    int likes_count;
    String feed_type;
    int obj_id;
    String image;
    String user_name;
    String user_earthmile_points;
    boolean liked;
    boolean commented;
    boolean is_private;
    String url;
    int feed_creator_id;

   }
编辑#2:事实上,我找到了一种让它工作的方法:)。请参阅下面的更新答案

编辑#1:虽然应用程序编译得很好,但在尝试实际创建
包裹时崩溃,错误为:
org.parceler.ParcelerRuntimeException:无法为io.realm.FeedRealmProxy创建ParcelableFactory
。Realm团队认为,目前无法在
RealmObject
s上实现
Parcelable
。目前尚不清楚是否/何时解决这一问题


使用,您可以执行以下操作:

@RealmClass//如果使用JDK 1.6,则需要此选项(与包裹商问题无关)
@地块(value=Parcel.Serialization.BEAN,analyze={Feed.class})
公共类提要扩展了RealmObject{
// ...
}

然后,使用
Parcels.wrap(Feed.class,Feed)
而不是
Parcels.wrap(Feed)
无处不在,否则,您的应用程序将崩溃,原因是
org.parceler.parcelerrentimeException:无法为io.realm.FeedRealmProxy创建ParcelableFactory

扩展RealmObject的所有类都将具有由批注处理器创建的匹配RealmProxy类。必须让包裹商知道这一类。请注意,在项目至少编译一次之前,该类不可用

@Parcel(implementations = { PersonRealmProxy.class },
    value = Parcel.Serialization.BEAN,
    analyze = { Person.class })
public class Person extends RealmObject {
// ...}

从技术上看,我从未见过一个用例,在这个用例中打包一个RealmObject是有意义的。你应该只发送主键。它会使用序列化吗?我听说序列化比包裹慢10倍。我不想在性能上妥协。那么,我应该使用这种技术还是使用其他解决方法呢?@penduDev No.Parceler仍然会创建标准的Android
Parcel
s,你不必担心这一点。这就是它的全部工作:)(事实上,非常清楚,即使创建一个
也是一种“序列化”形式,所以说“序列化比包慢10倍”是不正确的。相反,你应该说,“使用Java
可序列化的
接口比创建一个
”慢,原因是)。