標籤: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-->Realm(資料庫ORM)使用體驗,lambda運算式