码迷,mamicode.com
首页 > Windows程序 > 详细

请问如何等待异步API调用返回结果后再将结果返回给主进程?

时间:2014-10-18 23:45:10      阅读:274      评论:0      收藏:0      [点我收藏+]

标签:http   ar   sp   数据   on   问题   代码   ad   ef   

============问题描述============


代码如下。
在主进程调用data.getData()后希望返回从API取得data,但是现在由于异步的关系resultSFSearchDataJSONParser直到主进程完全结束后才返回值,这样在getData()那里根本取不到data。
请问如何才能让getData()等待resultSFSearchDataJSONParser返回值以后自己才返回给主进程?
个人对handler多线程之类不太熟悉,能给我个简单的例子最好,谢谢啦。

class data
{
...
//取得数据
public Data getData(key) {
Data data = new Data();
params.put("word", key);
                
                // 调用API取得数据
new DataLoader(){
@Override
public void resultSFSearchDataJSONParser(
SFSearchCountJSONParser sfSearchCountJSONParser, boolean isSuccess) {
// TODO Auto-generated method stub
super.resultSFSearchDataJSONParser(sfSearchCountJSONParser,isSuccess);
data = (Data)sfSearchCountJSONParser.result.get(0);
}
}.getData(this.key);
    
    return data;
}
}

// API取得数据
class DataLoader implements SFSearchJSONParserDelegate {
Data data = new Data();
private SFSearchCountJSONParser searchJSONParser = null;
private HashMap<String, String> params = new HashMap<String, String>();

public void getData(String key) {
params.put("word", key);
searchJSONParser = new SFSearchCountJSONParser();
searchJSONParser.parserDelegate = this;
searchJSONParser.executeStockSearchCountByParams(params); 

}

        // 结果返回函数
@Override
public void resultSFSearchDataJSONParser(
SFSearchCountJSONParser sfSearchCountJSONParser, boolean isSuccess) {
// TODO Auto-generated method stub
data = (Data)sfSearchCountJSONParser.result.get(0);
}

}

============解决方案1============


你可以看看我在这个帖子里的回答,我在那里举例说明了怎么样用AsyncTask来把结果返回给UI线程。

请问如何等待异步API调用返回结果后再将结果返回给主进程?

标签:http   ar   sp   数据   on   问题   代码   ad   ef   

原文地址:http://www.cnblogs.com/llj1985522/p/4033865.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!