版權(quán)聲明:本文來自 Crocutax 的博客 , 轉(zhuǎn)載請注明出處 http://www.crocutax.com
官網(wǎng)
模型
public class Dog extends RealmObject {
public String name;
public int age;
}
創(chuàng)建實體的方法:
1.直接new
Dog dog = new Dog();
2.通過create()方法
Dog dog = realm.create(Dog.class)
3.通過create()+預(yù)設(shè)主鍵(PrimaryKey)的方法
Dog dog =realm.create(Dog.class,1)
添加Bean進Database
Dog dog = new Dog();
dog.name = "Rex";
dog.age = 1;
Realm realm = Realm.getDefaultInstance();
realm.beginTransaction();
realm.copyToRealm(dog)
realm.commitTransaction();
查詢
RealmResults<Dog> pups = realm.where(Dog.class)
.lessThan("age", 2)
.findAll();
添加數(shù)據(jù)監(jiān)聽
// Listeners will be notified when data changes
pups.addChangeListener(new RealmChangeListener<RealmResults<Dog>>() {
@Override
public void onChange(RealmResults<Dog> results) {
// Query results are updated in real time
puppies.size(); // => 1
}
});
支持異步任務(wù)
realm.executeTransactionAsync(new Realm.Transaction() {
@Override
public void execute(Realm bgRealm) {
User user = bgRealm.createObject(User.class);
user.setName("John");
user.setEmail("john@corporation.com");
}
}, new Realm.Transaction.OnSuccess() {
@Override
public void onSuccess() {
// Transaction was a success.
}
}, new Realm.Transaction.OnError() {
@Override
public void onError(Throwable error) {
// Transaction failed and was automatically canceled.
}
});
Realm的異步操作
在子線程執(zhí)行任務(wù),在主線程發(fā)布onSuccess
回調(diào)
Realm.getDefaultInstance().executeTransactionAsync(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
//此方法在子線程
realm.copyToRealmOrUpdate(userBean);
KLog.i("execute...." + Thread.currentThread().getName() + "..." + (Looper.myLooper() == Looper.getMainLooper()));
}
}, new Realm.Transaction.OnSuccess() {
@Override
public void onSuccess() {
//此方法在子線程
KLog.i("onSuccess...." + Thread.currentThread().getName() + "..." + (Looper.myLooper() == Looper.getMainLooper()));
}
});
Log輸出:
execute....pool-8-thread-1...false
onSuccess....main...true
其他基礎(chǔ)操作只是在此基礎(chǔ)上簡單的換下api而已,不再記錄.