本文主要是介绍安卓数据库框架——Realm进阶学习,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
安卓数据库框架——Realm进阶学习
参考:
https://realm.io/cn/docs/java/latest/#realms
http://ngudream.com/2016/08/13/realm-builder/
Real的配置
基础配置
一般我们不配置migration和modules。
存储
Realm一般是建立一个数据库,如果仅仅希望存到内存,也是可以用的:
在realm完全关闭的时候会被释放。
Realm线程及监听
Realm可以实现不同线程中读取和写入 Realm 对象,即线程安全。同时,在Realm中的数据改变时,可以进行监听:
Realm监听:
在 Realm 数据改变的时候会被触发。
集合监听:
当集合中的某对象的属性改变时被触发,当然这个属性的改变需能保证该元素仍然满足查询条件从而使其仍然存在于集合当中。
对象监听:
为某个 Realm 对象注册监听器以获得针对对象属性修改的细粒度通知:
Json转换
可以直接将json对象转换成Realm对象并存储:
databaseHelper的封装:
public class GoodsDBHelper {
private static volatile GoodsDBHelper mInstance;
private final RealmConfiguration mDefaultConfig;
private ArrayList<RealmConfiguration> mConfigsList = new ArrayList<>();
private GoodsDBHelper(){
super();
mDefaultConfig = new RealmConfiguration.Builder()
.name("PDA_Goods.realm") //文件名
.schemaVersion(0) //版本号
.build();
}
public static GoodsDBHelper getInstance(){
if(mInstance == null){
synchronized (GoodsDBHelper.class){
if(mInstance == null){
mInstance = new GoodsDBHelper();
}
}
}
return mInstance;
}
private Realm createRealm() {
return createRealmByConfig(mDefaultConfig);
}
private Realm createRealmByConfig(RealmConfiguration config){
mConfigsList.add(config);
return Realm.getInstance(config);
}
/**
* 添加物资基本信息
* @param info
*/
public void insertGoodsInfo(GoodsInfo info){
Realm realm = createRealm();
realm.beginTransaction();
realm.copyToRealmOrUpdate(info);
realm.commitTransaction();
realm.close();
}
/**
* 查询指定物资
* @param goodsID
* @return
*/
@Nullable
public GoodsInfo queryGoodsInfo(String goodsID){
Realm realm = createRealm();
GoodsInfo info = realm.where(GoodsInfo.class).equalTo("userId", goodsID).findFirst();
GoodsInfo result = null;
if(info != null) {
result = realm.copyFromRealm(info);
}
realm.close();
return result;
}
/**
* 查询全部用户
* @return
*/
public List<GoodsInfo> queryGoodsInfos(){
Realm realm = createRealm();
RealmResults<GoodsInfo> realmResults = realm.where(GoodsInfo.class).findAll();
List<GoodsInfo> arrayList = realm.copyFromRealm(realmResults);
realm.close();
return arrayList;
}
/**
* 删除指定用户
* @param userId
*/
public void deleteGoodsInfo(String userId){
Realm realm = createRealm();
GoodsInfo info = realm.where(GoodsInfo.class).equalTo("userId", userId).findFirst();
if(info != null) {
realm.beginTransaction();
info.deleteFromRealm();
realm.commitTransaction();
}
realm.close();
}
/**
* 删除全部用户信息
*/
public void deleteAllGoodsInfo(){
Realm realm = createRealm();
realm.beginTransaction();
realm.delete(GoodsInfo.class);
realm.commitTransaction();
realm.close();
}
}
这篇关于安卓数据库框架——Realm进阶学习的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!