Android Realm数据库简单入门

官网

Realm官网

android文档

一个不错的Realm简介博客

模型

public class Dog extends RealmObject {
    public String name;
    public int age;
}

创建实体的方法:

1.直接new
    Dog dog = new Dog();

2.通过create()方法
    Dog dog = realm.create(Dog.class)

3.通过create()+预设主键(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();

添加数据监听

// 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
    }
});

支持异步任务

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的异步操作

在子线程执行任务,在主线程发布onSuccess回调

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

其他基础操作只是在此基础上简单的换下api而已,不再记录.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Crocutax

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值