Realm for Android快速入门教程
2015-12-28 09:31
417 查看
介绍
如果你关注安卓开发的最新趋势,你可能已经听说过相比SQLite,Realm更快并且具有很多现代数据库的特性,比如支持JSON,流式api,数据变更通知,以及加密支持,这些都为安卓开发者带来了方便。
在这篇快速入门教程中,你将学到Android版Realm的基础知识。本教程我们使用的是Realmv0.84.1。
1.添加Realm到工程
要在安卓工程中使用Realm,你需要在module的build.gradle文件中添加一个依赖:1 | compile 'io.realm:realm-android:0.84.1' |
2.创建一个Realm
一个Realm相当于一个SQLite数据库。它有一个与之对应的文件,一旦创建将持久保存在安卓的文件系统中。要创建一个新的Realm,你可以在任意Activity中调用静态方法Realm.getInstance。
1 | RealmmyRealm=Realm.getInstance(context); |
如果你想向app中添加另一个Realm,必须使用一个RealmConfiguration.Builder对象,并为Realm文件指定一个独有的名字。
1 2 3 4 5 6 | RealmmyOtherRealm= Realm.getInstance( new RealmConfiguration.Builder(context) .name( "myOtherRealm.realm" ) .build() ); |
3.创建一个RealmObject
只要继承了RealmObject类,任意JavaBean都能存储在Realm中。不知道JavaBean是什么?它就是一个可序列化的java类,有默认构造器,成员变量有相应的getter/setter方法。比如,下面这个类的实例就能轻松的存储在一个Realm中:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | publicclassCountryextendsRealmObject{ privateStringname; privateintpopulation; publicCountry(){} publicStringgetName(){ return name; } publicvoidsetName(Stringname){ this .name=name; } publicintgetPopulation(){ return population; } publicvoidsetPopulation(intpopulation){ this .population=population; } } |
1 2 3 4 5 6 7 8 9 10 | @PrimaryKey privateStringcode; publicStringgetCode(){ return code; } publicvoidsetCode(Stringcode){ this .code=code; } |
4.创建transaction
虽然从一个Realm读取数据非常简单(下一节有讲),但是向它写入数据就稍微复杂一点。Realm遵循要开始一个新的事务,使用beginTransaction方法。类似地,要结束这个事务,使用commitTransaction方法。
注:事务即英文里面的transaction。
这里演示了如何创建和保存一个Country类的实例:
1 2 3 4 5 6 7 8 9 10 11 | myRealm.beginTransaction(); //Createanobject Countrycountry1=myRealm.createObject(Country.class); //Setitsfields country1.setName( "Norway" ); country1.setPopulation(5165800); country1.setCode( "NO" ); myRealm.commitTransaction(); |
如果你必须使用构造器,别忘了在提交事务前使用相关Realm对象的copyToRealm方法。这里是示例:
1 2 3 4 5 6 7 8 9 | //Createtheobject Countrycountry2= new Country(); country2.setName( "Russia" ); country2.setPopulation(146430430); country2.setCode( "RU" ); myRealm.beginTransaction(); CountrycopyOfCountry2=myRealm.copyToRealm(country2); myRealm.commitTransaction(); |
5.书写查询
Realm为创建查询提供了一套非常直观和流式的API。要创建一个查询,使用相关Realm对象的where方法并传入你感兴趣的对象的类。创建完查询之后,你可以使用返回一个RealmResults对象的findAll方法获取所有的结果,findAll。在下面的例子中,我们获取并打印Country的所有对象:1 2 3 4 5 6 7 8 | RealmResults<Country>results1= myRealm.where(Country.class).findAll(); for (Countryc:results1){ Log.d( "results1" ,c.getName()); } //PrintsNorway,Russia |
1 2 3 4 5 6 | RealmResults<Country>results2= myRealm.where(Country.class) .greaterThan( "population" ,100000000) .findAll(); //GetsonlyRussia |
1 2 3 4 5 6 | //Sortbyname,indescendingorder RealmResults<Country>results3= myRealm.where(Country.class) .findAllSorted( "name" , false ); //GetsRussia,Norway |
总结
在这篇快速入门中,你学到了如何在安卓项目中使用Realm。可以看到创建一个Realm数据库、存储查询数据是多么的容易。要学习更多tRealmforAndroid的知识,你可以查阅它的相关文章推荐
- 【Android开发】wifi开关与wifi连接(密码连接)
- Android 权限
- Android AsyncTask详解
- Android文件浏览器
- Android反射例子的学习
- android开发游记:弹出窗和底部弹出窗的实现和动画效果
- Android---再按一次退出页面
- 《Android源码设计模式解析与实战》读书笔记(十二)
- Android Kitkat 如何让系统永久不休眠
- Android:Attribute is missing the Android namespace prefix
- android的显式提交和隐式提交
- android删除文件出错
- 欢迎使用CSDN-markdown编辑器
- android130 android启动
- Android遇到java.lang.RuntimeException: Binary XML file line #20这样的问题怎么办
- Android开发之ActionBar与DrawerLayout
- Android官方刷新组件 SwipeRefreshLayout 的使用
- [android]_[ListView的基本使用]
- [android]_[四种基本布局]
- Android开发之应用程序创建与目录结构