Realm Java 简明教程(1)
2016-02-16 19:56
465 查看
Realm Java 简明教程
Realm 是一个轻量的android版本的数据存储库
Realm 是一个轻量的android版本的数据存储库,快速简洁的操作方式,使得其优势得以凸显,我们来看下一个实例:// 定义需要存储的类,继承自 RealmObject public class Dog extends RealmObject { @Required // Name cannot be null private String name; private int age; // ... Generated getters and setters ... } public class Person extends RealmObject { @Required // Name is not nullable private String name; private String imageUrl; // imageUrl is an optional field private RealmList<Dog> dogs; // A person has many dogs (a relationship) // ... Generated getters and setters ... } // 像一般的操作方式使用它 Dog dog = new Dog(); dog.setName("Rex"); dog.setAge("1"); Log.v(TAG, "Name of the dog: " + dog.getName()); // 获取一个Realm实例 Realm realm = Realm.getInstance(context); // 查找Dog数据库中字段age小于2的所有数据 RealmResults<Dog> puppies = realm.where(Dog.class).lessThan("age", 2).findAll(); puppies.size(); // => 此时还没有插入存储,因此为0 // 保存这个数据 realm.beginTransaction(); realm.copyToRealm(dog); realm.commitTransaction(); // 查询是自动同步更新的 puppies.size(); // => 1 //异步查询和更新数据 realm.executeTransaction(new Realm.Transaction() { @Override public void execute(Realm realm) { // 开始查询和修改数据 Dog theDog = realm.where(Dog.class).equals("age", 1).findFirst(); theDog.setAge(3); } }, new Realm.Transaction.Callback() { @Override public void onSuccess() { // 原始的查询数据会自动更新 puppies.size(); // => 0 because there are no more puppies (less than 2 years old) dog.getAge(); // => 3 数据已经修改 } });
我们来看下如上的流程,发现处理过程比起我们之前使用的数据库方案简单了许多。像litepal的操作已经很简单,但是相对来说还是需要配置一些xml和app参数才可以使用。相对来说,Realm则非常轻量,简单易用,有同步和异步处理方案,代码相对也非常优雅。
开始
下载库或者去官网下载代码Realm jar
Realm src
前期要求
我们仅支持android
Android Studio >= 0.8.6 — 使用Eclipse,往下看.
最新的Android SDK版本.
JDK 版本 >=7.
我们支持android2.3以上版本
使用
你可以选择手动添加或者使用maven工具实现。
Maven
1.请确保您的项目使用jcenter作为一个依赖库 (默认的是最新的android gradle plugin)
2.在你的工程依赖库增加compile ‘io.realm:realm-android:0.87.4’
3.使用工具->Android->同步即可
Jar
1.下载jar包解压
2.新建一个工程
3.复制jar文件夹到app/libs里面
4.在工程的依赖里面加入包含此库。
混淆要求
Realm 在编译时生成每个RealmObject 的代理类。为了确保这些类可以在混淆和静态分析工具能运行的,你的混淆语法需要如下去编写:
-keep class io.realm.annotations.RealmModule -keep @io.realm.annotations.RealmModule class * -keep class io.realm.internal.Keep -keep @io.realm.internal.Keep class * { *; } -dontwarn javax.** -dontwarn io.realm.**
Api查询
你可以在官方地址查看到所有的api使用接口。具体Models的使用规则,下一章节再来分析。
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法