Rxjava在注册后直接登录

在android项目中对于用户注册后,会在注册完毕后,再调用登陆接口进行登录,这个地方显得代码不是很优雅。我们如果使用Rxjava如何让这种不优雅的操作变得优雅内,这就是我写下面代码的原因了。

首先我们代码需要引入的库

 

compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
compile 'io.reactivex.rxjava2:rxjava:2.1.7'
compile 'com.squareup.retrofit2:retrofit:2.3.0'
compile 'com.squareup.retrofit2:converter-gson:2.0.2'
compile 'com.squareup.okhttp3:logging-interceptor:3.4.0'
compile 'com.squareup.retrofit2:adapter-rxjava2:2.2.0'

需要的接口:

 

@POST("/user/app/regist")
Observable> register(@Query("loginName") String loginName, @Query("password") String password, @Query("grade") String grade, @Query("userType") String userType, @Query("checkCode") String checkCode);

@GET("/user/app/login")
Observable> login(@Query("loginName") String loginName,@Query("password")String password);

下面就是我们优雅的代码了:

 

Observable registerObservable = service.register("jame","123456","三年级","0","340909");
registerObservable
        .subscribeOn(Schedulers.io())
        .observeOn(Schedulers.io())
        .flatMap(new Function,Observable>>() {
            @Override
            public Observable> apply(HttpResponse o) throws Exception {
                UserInfo userInfo = o.results;
                return service.login(userInfo.loginName,userInfo.password);
            }
        })
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe(new BaseObserver() {
            @Override
            public void onSuccess(String token) {
                
            }
        });

 

你可能感兴趣的:(Rxjava)