1.1 基本要求
- Android Studio 1.5.1+
- JDK 7.0+
- Android SDK最新版本
- 最新的Realm 7.0版本: Android API 16+ (Android 4.1+).
說明:Realm不支持Android以外的Java。不支持Eclipse開發,請遷移到Android Studio。
1.2 安裝
配置Gradle插件.
第1步: 在項目級別的build.gradle
文件添加依賴路徑。
使用測試版本7.0.0-beta:
buildscript {
repositories {
jcenter()
google()
maven {
url 'http://oss.jfrog.org/artifactory/oss-snapshot-local'
}
}
dependencies {
classpath "io.realm:realm-gradle-plugin:7.0.0-beta-SNAPSHOT"
}
}
allprojects {
repositories {
jcenter()
google()
maven {
url 'http://oss.jfrog.org/artifactory/oss-snapshot-local'
}
}
}
使用最新的穩定版本:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath "io.realm:realm-gradle-plugin:6.0.2"
}
}
繼續,確保項目工程是“Projects”視圖。點擊Android Studio左上角的下拉菜單選擇“Projects”:
在“Projects” 視圖,選擇項目級別的build.gradle文件:
第2步:在應用級別的build.gradle
文件引用realm-android
插件。
apply plugin: 'realm-android'
在“Projects”視圖,找到應用級別的build.gradle
文件:
完成這兩項配置後,只需同步gradle依賴項即可。 如果要從v0.88之前的Realm版本升級,還需要清理gradle項目(./gradlew clean)。
下面是兩個修改build.gradle
文件的示例:
您是否要使用Realm同步所有數據庫?
所有與同步相關的文檔已移至我們的平臺文檔。
其他構建系統
不支持Maven和Ant構建系統。感興趣的可以在GitHub查看:
ProGuard配置作爲Realm庫的一部分提供。 這意味着您無需在ProGuard配置中添加任何特定於Realm的規則。
1.2.1 示例代碼
Realm可讓您以安全、持久和快速的方式有效地編寫App的模型層。如下:
// 創建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(每個App僅做一次)
Realm.init(context);
// 獲取此線程的Realm實例對象
Realm realm = Realm.getDefaultInstance();
// 查詢所有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); // 取得非託管對象
Person person = realm.createObject(Person.class); // 直接創建託管對象
person.getDogs().add(managedDog);
realm.commitTransaction();
// 數據更改時將通知監聽器
puppies.addChangeListener(new OrderedRealmCollectionChangeListener<RealmResults<Dog>>() {
@Override
public void onChange(RealmResults<Dog> results, OrderedCollectionChangeSet changeSet) {
// 查詢結果通過細粒度的通知實時更新。
changeSet.getInsertions(); // => [0] is added.
}
});
// 異步更新後臺線程上的對象
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,狗的年齡被更新
}
});
1.3 查看Realm數據庫
如果您在使用Realm時需要幫助,請查看 StackOverflow 答案以獲取詳細說明。
1.3.1 Realm Studio
Realm Studio是我們首屈一指的開發工具,能讓您輕鬆管理Realm數據庫和Realm平臺。 使用Realm Studio,您可以打開和編輯本地和同步的Realms,並管理任何Realm Object Server
實例。 它支持Mac,Windows和Linux。
1.3.2 Stetho Realm
您還可以將Stetho-Realm插件配置到Stetho,這是Facebook創建的Chrome瀏覽器的Android調試工具。
Stetho-Realm不是由Realm正式維護的。
1.4 Realm初始化
您必須先對其進行初始化,然後才能在應用程序中使用Realm,這隻需要執行一次。
Realm.init(context);
您必須提供一個Android Context對象。初始化Realm最好是MyApplication上的onCreate中:
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
Realm.init(this);
}
}
如果你創建了自己的application,你必須要註冊到AndroidManifest.xml文件中:
<application
android:name=".MyApplication"
...
/>