在android的开发过程中,客户端需要缓存部分数据,这时候数据库也许就是我们最先想到的。现在比较流行的数据有greenDao、ormlite、litepal、DBFlow、ActiveAndroid等。Realm 也是最近才开始的,于是自己根据官方文档开始了我的Realm之路。

1、首先就是引用Realm,需要在项目中的build.gradle添加 classpath "io.realm:realm-gradle-plugin:last_version",然后就是需要使用module的build.gradle中添加apply plugin: 'realm-android'。这样就基本配置好了就是开发了

2、具体实现数据储存

先创建一个类来缓存数据

public class Person extends RealmObject {

@PrimaryKey

private int id=0;

private String name;

private int age;

public String getName() { return name; }

public void setName(String name) { this.name = name; }

public int getAge() { return age; }

public void setAge(int age) { this.age = age; }

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

}

注意我们必须直接继承自RealmObject

接下就开始储存数据

Realm realm = Realm.getInstance(new RealmConfiguration.Builder(this)

.name("myOtherRealm.realm")

.build());

realm.executeTransactionAsync(new Realm.Transaction() {

@Override

public void execute(Realm realm) {

Person person;

long l = System.currentTimeMillis();

for (int i = 0; i <10 ; i++) {

person=new TestBean();

person.setId(i);

realm.copyToRealmOrUpdate(person);

}

Log.d("MainActivity", ((System.currentTimeMillis() - l) + " realm"));

}

}, new Realm.Transaction.OnSuccess() {

@Override

public void onSuccess() {

Toast.makeText(MainActivity.this, "成功", Toast.LENGTH_SHORT).show();

}

});

这样就成功了。

Realm还有有很多方法在这里就不一一列举了。我就再谈谈我的使用的感受

优点:

速度快、能加密

不足的地方

数据关联:

这个是一般的ORM框架一样,需要提前建立好关系,如果你需要临时按照一定条件去查询,只可以分开多次查询,不可以像sqlite连表查询。

稳定性:

这个可能和我自己的需求有关,应用有一些数据是先准备好的,软件把数据下载下来使用,现在realm还有新的功能在添加,数据保存的格式也会改动,数据库需要升级对我来说比较痛苦。

更新操作:

需要按照条件查询出来,写代码更新,不像sqlite一个语句搞定。

不支持分页:

查询结果不支持分页,但是相对速度快来说应该不是个事情,25k数据查询出来也是在毫秒级的。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐