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

2016-12-17  本文已影响60人  陈昶行

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也很好的实践了观察者模式。

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

上一篇 下一篇

猜你喜欢

热点阅读