在 AsyncTask 中等待回调

Wait for Callback inside AsyncTask

我想在 AsyncTask 做一些工作,包括一些下载小文件的服务器请求。下载完成后,继续 AsyncTask 中的逻辑,当所有内容完成后,我在 activity 中得到结果。一切正常,但我的 AsyncTask 没有等待回调方法:

public class AsyncOperation extends AsyncTask<String, Integer, String> {

@Override
protected String doInBackground(String... params) {
    String linkUrl = params[0];

    functionDoStuff(linkUrl);

    return "Executed";
}

public void functionDoStuff(String urlLink) {

    ... code ...

    String str = getFile(urlLink);

    !!! is not waiting for result !!!

    ... use 'str' ...

}

private String getFile(String urlLink) {
    String savedFileDestination = null;

    OkHttpClient client = new OkHttpClient();
    final Request request = new Request.Builder()
            .url(urlLink")
                    .build();

    client.newCall(request).enqueue(new com.squareup.okhttp.Callback() {
        @Override
        public void onFailure(Request request, IOException e) {
            //something goes wrong
        }

        @Override
        public void onResponse(com.squareup.okhttp.Response response) throws IOException {

            //get stream
            InputStream inputStream = response.body().byteStream();

            //this method save file and return file path
            savedFileDestination = saveFileMethod(inputStream);
        }
    });

        return savedFileDestination;
    }

}

如何等待此回调继续 functiobDoStuff() 中的逻辑?

将所有内容放入 onResponse method.Because onResponse 方法异步工作

@Selvin 是对的,我必须提出我的请求 同步 我的 'waiting problem' 不见了!

唯一的变化是 getFile() 方法,它应该是这样的:

   private void getFile(String urlLink) {
    OkHttpClient client = new OkHttpClient();

    final Request request = new Request.Builder()
            .url(urlLink)
            .build();

    try {
        Response response = client.newCall(request).execute();
        if (response!=null){
            InputStream inputStream = response.body().byteStream();
            saveFile(inputStream);
        }

    } catch (IOException e) {
        e.printStackTrace();
    }
}