Skip to content

andych008/RetrofitAndRxjava

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RetrofitAndRxjava

在用Retrofitc和Rxjava的小伙伴们,欢迎fork & pr,我一个人写能力有限,有点慢。。

这是一个Demo,通过代码演示并解答了大家在使用Retrofit和Rxjava的过程中经常会问的一些问题。

我热爱分享,但不愿意误导别人,有不正确的地方欢迎在issue里拍砖

下面是TodoList :(已完成的会标记出)

okhttp wiki

retrofit wiki

  1. 网络请求打log(完成)(用到okhttp-logging-interceptor)

  2. 给http请求加header,有如下几种方式:

    • 注解@Headers@Header(先猜一下@Headers@Header有什么区别,在写这个README的时候我也不知道,哈哈哈)
    • 在Intercepter里动态设置header,常见的就是设置token,不过这个demo现在只是设置一个固定值(见MyInterceptor
  3. 几种数据请求方式(get还是post,post body是form data还是json,这些知识请自已科普)

    • @GET的使用(见GetActivity
    • @POST(这个用得最多了,特别是做andrid开发,基本上我们会把多数的接口都定义成post json的方式)
    • @Path的使用(见GetActivity)(比如https://api.github.com/users/whateverhttps://api.github.com/users/JakeWharton只有whateverJakeWharton不同,retrofit要怎么定义这个接口。好学的小朋友这个时候肯定会再科普一下restful api的知识)
    • @FormUrlEncoded的使用(用来提交form表单数据)
    • @Multipart的使用(用来上传文件
  4. 怎么样低碳环保地显示加载中...?(完成)

    BetterGetActivity,通过compose来实现代码复用,这算是rxjava的小技巧。后面会详细介绍rxjava。

    .compose(RxUtils.<GitHubUser>showLoading(BetterGetActivity.this))

    作为Demo我只是在BetterGetActivity里实现了接口类ILoading。实际的项目中,你可能会有一个基类BaseActivity里实现,当然,也会有别的方式,欢迎pr)

  5. 网络加载的数据在显示之后有一些公用的数据正确性检查,这个要怎么写?

    我还没有特别明确的思路。但是对于如下的数据可以参考entity可用性常规则检查

    {
      "data": {
        
      },
      "error_code": 0,
      "message": ""
    }
  6. Interceptor拦截器都能干什么,哪些事情用它做会很低碳环保?(完成)

    直接说答案吧。比如,给每个请求加自定义header。见MyInterceptor

    //这里加了app的版本号,常见的可能还会加user-token之类的,都在这里加。顺便自己去看一下header()和addHeader()的区别,也许你在开发中用到。
    @Override
    public Response intercept(Chain chain) throws IOException {
        Request request = chain.request();
        request = request.newBuilder().header("App-Version", Tools.getVersionName()).build();
        return chain.proceed(request);
    }
    
  7. Converter转换器的使用

  8. CallAdapter(这里我主要只是会说说RxJavaCallAdapterFactory

  9. Auth(计划用https://developer.github.com/ 的api来演示)

  10. https

  1. 创建操作(createfromjustemptythrow )

  2. map(改变数据类型或修改数据,用得最多 )

  3. flatmap(map做不到的flatmap可以搞定,基本上能够熟练使用两个操作符,rxjava就算入门了 )

  4. toList()toSortedList()(专门说一下,虽然不重要,但是我经常用)

  5. 过滤、去重(filterdistinct )

  6. concat的使用场景

  7. rxBinding(以rxjava的姿势操作Android UI)

  8. RxLifecycle(rxjava用不好就更容易内存泄漏)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages