怎样才能在UI线程中等待okhttp返回结果才进行下一步

在onCreate()方法中的代码如下:


kHttpClient mOkHttpClient = new OkHttpClient();

RequestBody mRequestBody = new FormBody.Builder().add("imei",imei).build();

        Request mRequest = new Request.Builder().post(mRequestBody).url(url).build();

        mOkHttpClient.newCall(mRequest).enqueue(new Callback() {

            @Override

            public void onFailure(Call call, IOException e) {

                e.printStackTrace();

            }


            @Override

            public void onResponse(Call call, Response response) throws IOException {

                if (response.code() == 404){

                    Log.d(logTag,"请求缺少IMEI参数");

                }

                else if (response.code() == 405){

                    Message message = new Message();

                    message.what = 3;

                    handler.sendMessage(message);

                }else if (response.body().string() == "IMEIForbidden"){

                    Message message = new Message();

                    message.what = 4;

                    handler.sendMessage(message);

                }


                String version = response.body().string();



            }

        });

        

我想要的逻辑是这样的:

从一个URL接口中获取一个String值(上述代码中的version),获取到version值后再去调用下一个接口。

在安卓中网络请求得开线程,所以就用了okhttp的enqueue方法,可是在这个方法中获取到的response值,怎么传递到UI线程中呢,并且让UI线程的代码等待获取到这个值才继续执行


宝慕林4294392
浏览 1295回答 6
6回答

白板的微信

//方法一message.obj = version;//方法二Bundle bundle = new Bundle();bundle.putCharSequence("你的KEY",version);message.setData(bundle);//UI里的handle里面用Bundle bundle = message.getData();String version = bundle.getCharSequence("你的KEY");//或者直接String version = message.getData().getCharSequence("你的KEY");//当然,注意判空哦

Smart猫小萌

你请求到数据后直接把version 用msg.obj=version装进去,然后在OnCreate中handleMessage(Message msg)获取version再继续异步请求数据就可以啦啊
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java