安卓线程通信问题
我这里有一段网络请求的代码,执行后会返回一个字符串数组,但是请求与返回结果的赋值是在线程里完成的,每次返回都为空,请问如何保证在获取请求结果后返回呢
public List<String> requestFileList(final int fileType) throws IOException {
final List<String> fileList=new ArrayList<String>();
new Thread(new Runnable() {
@Override
public void run() {
RequestBody formBody = new FormBody.Builder()
.add("fileType", String.valueOf(fileType))
.build();
OkHttpClient okHttpClient = new OkHttpClient();
Request request = new Request.Builder()
.url(FILE_LIST_URL)
.post(formBody)
.build();
Call call = okHttpClient.newCall(request);
String resultJson = "";
Response response = null;
try {
response = call.execute();
resultJson = response.body().string();
JSONArray jsonArray = new JSONArray(resultJson);
for(int i=0;i<jsonArray.length();i++){
fileList.add(jsonArray.getString(i));
}
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
if (response.isSuccessful()) {
Log.v("FileList",String.valueOf(fileList.size()) );
}
}
}).start();
return fileList; //这里调用该函数的位置总是接到size=0的List
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
正常应该不像你这么写吧,在子线程中,网络请求完毕,你可以使用Handler,将返回值传给主线程,在主线程中处理数据,你可以选择弹出一个progressDialog,然后网络请求完毕,关闭,用户体验更好一点。