从零开始的Android新项目6 - Repository层(下) Realm、缓存、异常处理

承接上篇 从零开始的Android新项目5 - Repository层(上) Retrofit、Repository组装,本文继续介绍Realm、缓存,以及统一的异常处理设计。

Realm

Realm在移动端数据库中也算是比较有名的一款了,以其跨平台和惊人的速度而闻名。啊,对了,还有文档多。

这里要黑的就是文档问题,Realm虽然乍一看文档很多,但是老实说,写的挺乱的。不过总体来说,实践和应用中感觉还不错,性能好,也比较方便,比起不稳定的DBFlow和麻烦至极的GreenDao来好了太多了,唯一的美中不足就是so比较大,会增大包的体积1MB。

引入

从Realm 0.90开始,用法与之前有了改变:

在root的build.gralde中:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath "io.realm:realm-gradle-plugin:0.90.1"
    }
}

然后在对应需要应用到Realm的,比如data module的build.gradle:

apply plugin: 'realm-android'

即可使用Realm。

使用

使用起来也很方便,比如我们想要缓存用户的信息

public class UserPo extends RealmObject {
   
    @PrimaryKey
    public String id;
    public String name;
    public String headerUrl;
    public long updateTime;
}

这样就对应了一个表,其主键为id,另外有3列name, headerUrl, 以及updateTime。

如果想要查询,只需要:

UserPo user = getRealm().where(UserPo.class)
        .equalTo("id", userId)
        .findFirst();

如果要写入一条记录:

User user = new UserPo();
user.setName(userInfoEntity.getNickName());
user.setId(userInfoEntity.getUserId());
user.setHeaderUrl(userInfoEntity.getHeaderImageUrl());
user.setUpdateTime(System.currentTimeMillis());

getRealm().beginTransaction();
getRealm().copyToRealmOrUpdate(user);
getRealm().commitTransaction();

就是这么简单。

如果想要直接和Retrofit一起应用,去进行串行化,可以参考该Gist

// 结合 Realm, Retrofit 和 RxJava (使用了Retrolambda以简化符号)的例子。
// 读取所有Perso
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值