欢迎使用CSDN-markdown编辑器

android开发单例模式和Rxjava组合bug


纪录一个关于单例模式和Rxjava组合使用的bug。
项目中关于用户的基本信息使用了数据库来保存,操作数据库的helper类使用了最简单的单例模式。

public SqlHelper {
    public static SqlHelper helper;

    public static SqlHelper getInstance() {
        return new SqlHelper();
    }

    public Observable<Member> getMember() {
        return  Observable.just(member.getToken);
    }
}

在一个页面上我在onCreate方法中调用了一次该方法,并请求接口,在另一个点击事件中修改了数据库数据,请求了另一个接口。

接口使用Retrofit和Rxjava。

在点击之后发现了一个问题,页面上的两个接口又重新被请求,因为是提交订单页面,所以导致第二次被调用的时候出现了订单状态错误的bug。

Rxjava是一个观察者模式。当点击事件调用时修改了数据,Observable观察到数据的变化,重新调用。
SqlHelper类是一个单例,所以导致两个Observable从属于同一个,导致两个接口被再次请求。

目前的解决办法是取消单例模式。通过这个bug也很好的实践了观察者模式。

如有错误麻烦请指出,非常感谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值