寶慕林4294392
2019-03-30 18:14:16
在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參數(shù)"); } 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(); } }); 我想要的邏輯是這樣的:從一個(gè)URL接口中獲取一個(gè)String值(上述代碼中的version),獲取到version值后再去調(diào)用下一個(gè)接口。在安卓中網(wǎng)絡(luò)請求得開線程,所以就用了okhttp的enqueue方法,可是在這個(gè)方法中獲取到的response值,怎么傳遞到UI線程中呢,并且讓UI線程的代碼等待獲取到這個(gè)值才繼續(xù)執(zhí)行
6 回答

白板的微信
TA貢獻(xiàn)1883條經(jīng)驗(yàn) 獲得超3個(gè)贊
//方法一
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");
//當(dāng)然,注意判空哦

Smart貓小萌
TA貢獻(xiàn)1911條經(jīng)驗(yàn) 獲得超7個(gè)贊
你請求到數(shù)據(jù)后直接把version
用msg.obj=version
裝進(jìn)去,然后在OnCreate中handleMessage(Message msg)
獲取version再繼續(xù)異步請求數(shù)據(jù)就可以啦啊
添加回答
舉報(bào)
0/150
提交
取消