美文网首页
OkHttp 异步请求

OkHttp 异步请求

作者: luckyMannnn | 来源:发表于2018-07-28 17:35 被阅读0次
    image.png
    app 出错了...? 什么原因呢?我们看下错误信息


    image.png
    image.png
    错误说:只有UI线程才能去更新控件
     txtView.setText(response.body().string ());
    

    也就说明我们这段显示响应信息的代码是在子线程中执行的。从而反应出我们的 new Callback() 回调方法并不是在我们的主线程里,而是在子线程里。

    那我们改造下代码,将显示响应信息放在主线程中再去执行。

            //第四步 call对象调用enqueue()方法,通过Callback()回调拿到响应体Response
            call.enqueue(new Callback() {
                @Override
                public void onFailure(Call call, IOException e) {
                    //异步请求失败之后的回调
                }
    
                @Override
                public void onResponse(Call call, Response response) throws IOException {
                    //异步请求成功之后的回调
                    final String str = response.body().string ();
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            txtView.setText(str);
                        }
                    });
    
                }
            });
    

    这样就没有问题了!

    注意事项:onResponse() 和 onFailure() 两个回调方法都是在工作线程也就是子线程当中去执行的

    这里异步请求就完成了。

    相关文章

      网友评论

          本文标题:OkHttp 异步请求

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