前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Realm Java 官方教程翻译 (一):Getting Started

Realm Java 官方教程翻译 (一):Getting Started

作者头像
青蛙要fly
发布2024-02-18 08:11:08
1360
发布2024-02-18 08:11:08
举报

因为准备暂时的抛弃Sqlite而转成Realm。所以在Realm官网上看相关的教程。看见官网有相应的Java-Realm方面的使用教程,于是准备写Realm相关的知识。但是是全英文的,所以按照官网的教程的步骤,准备分篇来进行翻译。当然希望大家如果发现哪里有问题,可以提出来,(不要打我脸)。

按照下面的图片所示来分篇翻译:

学习步骤

然后这篇文章的知识点是如下图所示:

该篇翻译的知识点

原文链接:Realm Java2.2.1Latest

Realm Java 能让你安全、持续、快速的方式来写你的App中的model层。

代码语言:javascript
复制
//定义你的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 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 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>() {
    @Override
    public void onChange(RealmResults 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路径

代码语言:javascript
复制
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 Browser

API 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的时候如何编写单元测试

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-02-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 开始
  • 首先要准备的
  • 安装
  • ProGuard
  • Realm Browser
  • API Reference
  • 例子
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档