美文网首页
OkHttp的一些东西

OkHttp的一些东西

作者: Answer_yzpppp | 来源:发表于2017-03-26 20:52 被阅读99次

    1.同步请求必须在子线程中执行,因为在Android4.0之后主线程中不允许网络请求,究其根本是因为同步网络请求会造成线程阻塞,主线程中阻塞5秒会ANR。

    2.onResponse回调的参数是response,一般情况下,比如我们希望获得返回的字符串,可以通过response.body().string()获取;如果希望获得返回的二进制字节数组,则调用response.body().bytes();如果你想拿到返回的inputStream,则调用response.body().byteStream()

    3.client.execute直接返回response,通过线程间通信的方式:1.handler.sendMessage2.runOnUiThread(runnable) 3.view.post(runnable) 在主线程中更新UI

    4.同步请求一般用于当前线程的执行必须使用另一个线程的数据,比如A线程执行中必须使用B线程返回的数据,此时可以在A线程中使用client.execute(),A线程阻塞,等待B线程返回结果后继续执行。//好像有错,应该是同步请求只能用于子线程,会阻塞当前线程

    5.应尽量使用异步请求,因为同步请求需要我们自己创建子线程。

    6.Activity判断当前线程是否是主线程是在onResume()方法中。所以在onCreate中创建子线程并更新UI可能不会报错。

    7.异步请求call.enqueue(newCallback())的两个回调方法onFailure和onResponse均是在子线程中执行的,支持大文件的下载。需要更新UI是仍需要使用handler等方法。

    8.每个 response的body 只能被消费一次,多次消费会抛出异常,也就是说每个body只能被获取一次。body 必须被关闭,否则会发生资源泄漏。

    相关文章

      网友评论

          本文标题:OkHttp的一些东西

          本文链接:https://www.haomeiwen.com/subject/ybwkottx.html