Retrofit要点

接口

GET

public interface GetOrderInfoService { 
   @GET("index.php?r=api/shop/orderDetail")
   Observable<OrderInfo> getOrderInfo(
      @Query("order_id") String order_id
   );
}

POST

public interface PostDeletePet {
    @POST("index.php?r=api/pet/del")
    @FormUrlEncoded
    Observable<BaseModel> deletePet(
        @Field("pet_id") String pet_id
    );
}

DOWNLOAD

public interface GetNewAppService {
    @Streaming
    @GET
    Observable<ResponseBody> download(
         @Url String fileUrl
    );
}

回调

单个

 RetrofitClient.getRC().create(CheckUpdateService.class).getUpdateData() // 生成observer
                .subscribeOn(Schedulers.io()) // 任务执行在io线程
                .observeOn(AndroidSchedulers.mainThread()) // 结果订阅在主线程
                .compose(bindUntilEvent(ActivityEvent.DESTROY)) // 与Activity生命周期绑定
                .subscribe(subscriber); // subscriber是订阅者

顺序执行

RetrofitClient.getRC().create(PostLoginService.class).getWXToken()
                .subscribeOn(Schedulers.io())
                .flatMap(new Func1<Token, Observable<WXModel.UserInfo>>() {
                    @Override
                    public Observable<WXModel.UserInfo> call(Token token) {
                        return RetrofitClient.getRC().create(PostLoginService.class).getWXUser();
                    }
                })
                .flatMap(new Func1<WXModel.UserInfo, Observable<User>>() {
                    @Override
                    public Observable<User> call(WXModel.UserInfo userInfo) {
                        return RetrofitClient.getRC().create(PostLoginService.class).login();
                    }
                })
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(subscriber);

异步并行

Observable<InitModel> initData = RetrofitClient.getRC().create(InitAppService.class).getInitData();
Observable<UserSee> userInfoData = RetrofitClient.getRC().create(GetUserInfoService.class).getUserInfoData();
Observable<BaseModel> merge = Observable.merge(initData, userInfoData);
merge.subscribeOn(Schedulers.io())
           .observeOn(AndroidSchedulers.mainThread())
           .subscribe(subscriber);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,306评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,967评论 25 709
  • Node基本 node的最大特性莫过于基于事件驱动的非阻塞I/O模型。 node通过事件驱动的方式处理请求,无须为...
    AkaTBS阅读 6,614评论 0 11
  • 鹧鸪天-逍遥游 一一石穿 俗子凡夫何所求, 天涯海角纵情游。 山巅禅坐清风沐, 夜半涛听明月柔。 梦雅韵...
    赵如何阅读 1,800评论 0 2
  • 把工作当成深爱(⑉°з°)-的去对待越挫越勇的走向高峰,非常开心最近的状态,意识到工作的难度,更快的去克服,执行力...
    接受每一刻时光阅读 1,384评论 0 0