1. 使用前的build.gradle配置
1.1) 项目根目录下的build.gradle,在dependencies中添加
classpath "io.realm:realm-gradle-plugin:3.0.+"
// 如果和gradle版本不匹配报错的 请自行更改
1.2) 在主Module的build.gradle文件中添加
apply plugin: 'realm-android'
realm {
syncEnabled = true;
}
2. 代码中常规使用
2.1) 初始化
// 在Application 的onCreate() 中或者在需要的serve中
Realm.init(this);
RealmConfiguration config = new RealmConfiguration.Builder()
.name("myRealm.realm")
.schemaVersion(1)
.build();
Realm.setDefaultConfiguration(config);
2.2) 查询
Realm realm=Realm.getInstance(config);
// 查询所有
RealmResults<FailFileInfo> data = realm.where(FailFileInfo.class).findAll();
//根据条件查询
FailFileInfo failFileInfo = realm.where(FailFileInfo.class).equalTo("fid", fid).findFirst();
realm.close();
2.3) 增加
Realm realm = Realm.getInstance(config);
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
FailFileInfo failFileInfo = new FailFileInfo();
failFileInfo.setFid(fid);
failFileInfo.setDevid(devid);
realm.copyToRealm(failFileInfo);
}
});
realm.close();
2.4) 删除
Realm realm = Realm.getInstance(config);
FailFileInfo failFileInfo = realm.where(FailFileInfo.class).equalTo("fid", fid).findFirst();
realm.beginTransaction();
if (failFileInfo!= null) {
Log.e(TAG, failFileInfo.toString());
failFileInfo.deleteFromRealm();
}
realm.commitTransaction();
realm.close();
3. 总结下遇到的问题
主要是多线程的问题,在不同线程间根据 Realm.getInstance(config); 获取到realm, 可能这个线程在增加,那个线程在查询,数据不同步。以前认为只需要在 onDestroy()中 close()掉,后来多次尝试发现 每次获取realm 操作完后 realm.close(); 在新的线程 新获取的realm得到的数据就是最新的啦。
网友评论