通过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仍然会创建标准的AndroidParcel
s,你不必担心这一点。这就是它的全部工作:)(事实上,非常清楚,即使创建一个包
也是一种“序列化”形式,所以说“序列化比包慢10倍”是不正确的。相反,你应该说,“使用Java可序列化的
接口比创建一个包
”慢,原因是)。