java - Android AsyncTask 等待完成

标签 java android web-services

我正在 Android 应用程序中使用 AsyncTask 调用 Web 服务,但我不知道如何等待 onPostExecute 完成:

//Call Async Web Service here 
AsyncCallWS task = new AsyncCallWS();
task.execute();
//Need to wait to fill this in ** Its not  waiting.
String sCall = rslt;
String[] aCall = sCall.split("//|");

private class AsyncCallWS extends AsyncTask<Void, Void, Void> {
    @Override
    protected void onPreExecute() {
        Log.i(TAG, "onPreExecute");
    }
    @Override
    protected Void doInBackground(Void... params) {
        Log.i(TAG, "doInBackground");
        GetURL();
        return null;
    }
    @Override
    protected void onPostExecute(Void result) {
        Log.i(TAG, "onPostExecute");
        try{
            //Results HERE
            rslt = resultString.toString();
        }
        catch(Exception ex)
        {rslt = ex.toString()+ "|" + ex.toString();}

    }
}

最佳答案

我不清楚你不能/不想从 onPostExecute 做什么,但是如果你想执行与任务不耦合的东西(这样你就可以运行任务),你可以使用回调从任何地方)

private class OnFinishedListener {
    void onFinished(String rslt);
}

private class AsyncCallWS extends AsyncTask<Void, Void, Void> {

    private OnFinishedListener mAfter;

    public AsyncCallWS(OnFinishedListener after) {
        mAfter = after;
    }

    ...

    @Override
    protected void onPostExecute(Void result) {
        ....
        if (mAfter != null) {
            //you didnt illustrate what resultString is, you might
            //want this to be the returned value from doInBackground
            mAfter.onFinished(resultString.toString());
        }
    }

}

使用

new AsyncCallWS(new OnFinishedListener {
    public void onFinished(String rslt) {
        //for example
        String sCall = rslt;
        String[] aCall = sCall.split("//|");
    }
}).execute();

关于java - Android AsyncTask 等待完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34535066/

相关文章:

java - WildFly 8.2 为远程服务器配置JMS Bridge

java - 无法解析 JSON 中的古吉拉特语文本

android lvl 检查购买的应用程序是否在退款期内

安卓游戏UDP/TCP?

java - 创建一个指标,显示 SonarQube 5.6 中特定规则的问题数量

java - 如何使用 Hibernate @Any 相关的注解?

用于可重用代码的 Android StartActivityForResult - 还有其他方法吗? (关于推特)

c# - Web 服务字符串中的 Null 被接收为 string.empty

javascript - 使用 extjs 存储中的代理从 Web API 服务获取数据的问题

asp.net - 网站/Web 服务部署环境不同/监控?