Android-->Realm(資料庫ORM)使用體驗,lambda運算式

來源:互聯網
上載者:User

標籤:http   settime   閱讀   效能   end   lis   statistic   bool   project   

Realm,為行動裝置而生。替代 SQLite 和 Core Data。

非常慶幸,官方協助文檔有中文: https://realm.io/cn/docs/java/latest/
儘管眼下最新的版本號碼0.88.3,連1.0的版本號碼都沒有公布…可是全然不影響她的強大;

API文檔: https://realm.io/docs/java/latest/api/

因為官方的協助文檔,有中文的…大家看起來非常easy懂,我這裡僅僅依據個人使用經驗,寫寫體驗.

1:Realm的引用

Project層級的build.gradle檔案:

buildscript {    repositories {        jcenter()    }    dependencies {        classpath ‘com.android.tools.build:gradle:2.1.0-beta3‘        classpath ‘me.tatarka:gradle-retrolambda:3.3.0-beta4‘ //lambda運算式配置步驟1        classpath "io.realm:realm-gradle-plugin:0.88.3"//注意此行    }}allprojects {    repositories {        jcenter()    }}

Module層級的build.gradle

apply plugin: ‘com.android.application‘apply plugin: ‘me.tatarka.retrolambda‘ //lambda運算式配置步驟2apply plugin: ‘realm-android‘ //注意此行android {    ...    //lambda運算式配置步驟3,結束.    compileOptions {        encoding "UTF-8"        targetCompatibility JavaVersion.VERSION_1_8        sourceCompatibility JavaVersion.VERSION_1_8    }}dependencies {    ...}

(彩蛋:上述中,包括了lambda運算式的配置步驟…你懂得)

2:增刪改查的操作

//封裝的操作類public class RRealm {  /**   * 必須調用的方法   */  public static void init(Context context, String name, boolean clean) {      RealmConfiguration configuration = new RealmConfiguration.Builder(context).name(name).build();      if (clean) {          Realm.deleteRealm(configuration);      }      Realm.setDefaultConfiguration(configuration);  }  public static Realm realm() {      return Realm.getDefaultInstance();  }  /**   * 通常能夠直接此方法   */  public static void operate(OnOperate operate) {      if (operate != null) {          Realm realm = realm();          realm.beginTransaction();          operate.on(realm);          realm.commitTransaction();          realm.close();      }  }  public interface OnOperate {      void on(Realm realm);  }}
private void add() {    RRealm.operate(realm -> {        for (int i = 0; i < Num; i++) {            TestRealmObject realmObject = realm.createObject(TestRealmObject.class);            realmObject.setAge(i);            realmObject.setName("name" + i);            realmObject.setTest("test" + i);            realmObject.setTime(System.currentTimeMillis());        }    });}private void delete() {    RRealm.operate(realm -> {        RealmResults<TestRealmObject> all = realm.where(TestRealmObject.class).findAll();        all.clear();    });}private void update() {    RRealm.operate(realm -> {        RealmResults<TestRealmObject> all = realm.where(TestRealmObject.class).findAll();        for (int i = 0; i < all.size(); i++) {            TestRealmObject object = all.get(i);            object.setName(object.getName() + " new");            object.setTest(object.getTest() + " new");        }    });}private void query() {    RRealm.operate(realm -> {        RealmQuery<TestRealmObject> where = realm.where(TestRealmObject.class);        RealmResults<TestRealmObject> all = where.findAll();        for (TestRealmObject object : all) {            e(object.toString());        }    });}

3:效能評估

//測試類public class TestRealmObject extends RealmObject {    public String name;    public int age;    public long time;    public String test;}//插入1000條資料: 149 毫秒 148  158  118//查詢1000條資料: 146 毫秒 183  178  192//刪除1000條資料: 39  毫秒  44   37   38//更新1000條資料: 212 毫秒 195  185  216//資料僅供參考

再次提醒:官方有中文文檔,大家能夠具體閱讀,會比較好;

至此: 文章就結束了,如有疑問: QQ群:274306954 歡迎您的增加.

Android--&gt;Realm(資料庫ORM)使用體驗,lambda運算式

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.