在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线程的代码等待获取到这个值才继续执行
6 回答

白板的微信
TA贡献1883条经验 获得超3个赞
//方法一
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猫小萌
TA贡献1911条经验 获得超7个赞
你请求到数据后直接把version
用msg.obj=version
装进去,然后在OnCreate中handleMessage(Message msg)
获取version再继续异步请求数据就可以啦啊
添加回答
举报
0/150
提交
取消