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

作者: 青蛙要fly | 来源:发表于2016-12-06 01:45 被阅读792次

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

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

    学习步骤

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

    该篇翻译的知识点

    原文链接:Realm Java2.2.1Latest

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


    接下去可以看Realm Java官方教程翻译(二):Getting Help及Models

    相关文章

      网友评论

      本文标题:Realm Java官方教程翻译(一):Getting Star

      本文链接:https://www.haomeiwen.com/subject/meycmttx.html