因为准备暂时的抛弃Sqlite而转成Realm。所以在Realm官网上看相关的教程。看见官网有相应的Java-Realm方面的使用教程,于是准备写Realm相关的知识。但是是全英文的,所以按照官网的教程的步骤,准备分篇来进行翻译。当然希望大家如果发现哪里有问题,可以提出来,(不要打我脸)。
按照下面的图片所示来分篇翻译:
学习步骤然后这篇文章的知识点是如下图所示:
该篇翻译的知识点Realm Java 能让你安全、持续、快速的方式来写你的App中的model层。
//定义你的model类,并且继承自RealmObject
public class Dog extends RealmObject {
private String name;
private int age;
//...生成相应属性的getters 和 setters方法...
}
public class Person extends RealmObject {
@PrimaryKey
private long id;
private String name;
private RealmList<Dog> dogs; // 声明一对多的关系
//...生成相应属性的getters 和 setters方法...
}
//像使用标准的java对象一样使用它们
Dog dog = new Dog();
dog.setName("Rex");
dog.setAge(1);
//初始化 Realm
Realm.init(context);
//在该线程中获取一个Realm实例
Realm realm = Realm.getDefaultInstance();
//在Realm中查询所有的大于2岁的狗
final RealmResults<Dog> puppies = realm.where(Dog.class).lessThan("age", 2).findAll();
puppies.size(); //小狗数量结果为0,因为现在Realm中还没有添加狗
// 在事务中存留你的数据
realm.beginTransaction();
final Dog managedDog = realm.copyToRealm(dog); // Persist unmanaged objects
Person person = realm.createObject(Person.class); // Create managed objects directly
person.getDogs().add(managedDog);
realm.commitTransaction();
//当数据改变的时候,Listener将会被调用
puppies.addChangeListener(new RealmChangeListener<RealmResults<Dog>>() {
@Override
public void onChange(RealmResults<Dog> results) {
//查询到的小狗的数量结果也会在同一时间被更新掉
puppies.size(); // 小狗数量为1
}
});
//在后台进程中异步更新对象
realm.executeTransactionAsync(new Realm.Transaction() {
@Override
public void execute(Realm bgRealm) {
Dog dog = bgRealm.where(Dog.class).equalTo("age", 1).findFirst();
dog.setAge(3);
}
}, new Realm.Transaction.OnSuccess() {
@Override
public void onSuccess() {
//原始查询和Realm对象会被自动更新
puppies.size(); // 小狗的数量为0,因为没有比2岁更年轻的小狗了
managedDog.getAge(); // 小狗的年龄已经被更新为3了
}
});
开始
下载Android使用的 Realm 或者查看reaml-java 的源码 realm-java on GitHub.
首先要准备的
我们当前只支持在安卓中使用的Java版本Realm。
Android Studio 版本大于等于 1.5.1
最新版本的Android SDK
JDK 版本要大于等于 7
我们支持所有API为9及以上的安卓版本(Android 2.3及2.3以上版本)
安装
Realm是作为一个Gradle插件来进行安装的。
安装分为二步:
第一步: 在project目录下的build.gradle中添加下面所示的class路径
buildscript {
repositories {
jcenter()
}
dependencies {
classpath "io.realm:realm-gradle-plugin:2.2.1"
}
}
project目录下的 build.gradle 文件如下图所示位置:
build.gradle第二步: 在应用目录下的build.gradle文件的内容上方处的使用realm-android插件。
apply plugin: 'realm-android'
应用目录下的build.gradle的位置如下所示:
build.gradle一旦这二步你都已经写好了。就可以简单的刷新下你的gradle依赖。如果你通过v0.88以前的版本来更新,你需要去清理下你的gradle项目(./gradlew clean) 来移除之前存在的安装。
关于二个所要修改的build.gradle文件的例子里面如下面显示查看:
Project level build.gradle
Application level build.gradle
其他的编译系统
Maven 和 Ant 编译系统并不支持。如果你希望能看到支持这些编译系统,请表达你对下面问题的兴趣,然后我们也可以评估。
Maven support
Ant support
你们的意见将让我们做决定是否及何时来实现Ant 和 Maven插件。
从 v1.0.0开始,Eclipse将不再支持。我们建议转移到 Android Studio.
ProGuard
ProGuard配置已经被Realm library所提供,这意味着你并不需要在你的ProGuard配置去添加其他的Realm的特殊的规则。
Realm Browser
我们提供了独立的名叫Realm Browser Mac app 去读取和编辑.realm的数据库
Realm BrowserAPI Reference
你可以查看我们的全部API文档 ,包括所有的classes, methods 及更多。
例子
看下我们的examples,来看Realm是如何在app中被使用的。
看这里 来知道关于怎么运行这些例子的更多详情。
introExample:包括了简单的例子,让你知道怎么去使用当前的API.
gridViewExample :一个简单的app,来展示怎么通过Realm来支持GridView的存储。同时它还呈现了如何构建一个JSON(使用GSON)的数据库,及如何使用ABI splits来减少最终的APK的大小。
threadExample :一个简单的应用来知道如何在多线程环境中使用Realm。
adapterExample :如何通过使用RealmBaseAdapter和RealmRecyclerViewAdapter来使Realm以优雅的方式来作用于 Android ListView and RecyclerView
jsonExample :呈现如何使用一种新的Realm JSON 工具
encryptionExample :如何使用加密Realms
rxJavaExamples :如何搭配RxJava来使用Realm
unitTestExample :教你在使用Realm的时候如何编写单元测试
网友评论