android - android从线程内返回结果
问题描述
我有一个upload(String base_code)
以base64编码字符串形式获取文件的方法,该方法向api端点发出带有base64字符串的post请求以将文件上传到服务器中,如果上传成功,api端点将返回一个200 状态码。
public static void upload(final String base_code) {
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
Request request;
RequestBody request_body;
Response response;
MultipartBody.Builder body = new MultipartBody.Builder();
body.setType(MultipartBody.FORM);
body.addFormDataPart("img", base_code);
request_body = body.build();
request = new Request.Builder().url("https://api/endpoint/upload").post(request_body).build();
response = client.newCall(request).execute();
} catch (IOException e) {
e.printStackTrace();
}
}
});
thread.start();
}
无论上传是否成功,我都希望该方法upload()
返回真或假,但是我不能这样做,因为代码是在自己的线程中执行的。我该怎么做?
发布请求是通过okhttp3
lib 完成的,我可以通过检查来确定上传是否成功response.code()
。
谢谢
解决方案
使用AsyncTask
. 您可以执行thread
indoInBackground
方法并将数据传回uiThread
viaonPostExecute
方法。
看看这个。