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也很好的实践了观察者模式。
如有错误麻烦请指出,非常感谢!