首页 > 解决方案 > 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()返回真或假,但是我不能这样做,因为代码是在自己的线程中执行的。我该怎么做?

发布请求是通过okhttp3lib 完成的,我可以通过检查来确定上传是否成功response.code()

谢谢

标签: android

解决方案


使用AsyncTask. 您可以执行threadindoInBackground方法并将数据传回uiThreadviaonPostExecute方法。

看看这个


推荐阅读