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

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容