单例模式和Rxjava遇到的问题

来源:互联网 发布:python中日期加减 编辑:程序博客网 时间:2024/05/16 18:20

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

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



0 0
原创粉丝点击