开发者社区> 问答> 正文

关于二层爬虫程序数据获取问题?

比如我定义了一个实体类,如下

 MessageItem{
 string title;
 string image Url;
 ……
 }

省略号为get和set方法。

现在我用开启了一个线程请求网页数据,可是这个网页只有标题,和内容链接。我在这个线程返回的数据中setTitle()的值,可是面对后面链接我又得开一个线程来获取图片链接,可是当我在第二个线程中这样做的时候,数据已经返回了,即使获得了图片链接,也没有存储到我在第一个线程中创建的实体类中。我在第一个线程中执行玩后调用第二个线程才返回实体类,可是没等返回第二数据设置,数据就已经返回了。可能不好理解,我配上代码。

假如我用的某个网络请求类为okHttp

`okHttp.get(url,new CallBack(){
public void success(string response){
MessageItem item =new MessageItem()
......`
上面一段解析获得了,文章标题,和文章内容链接。
item.setTitle(title);
因为获取的是文章链接不是图片链接我这个时候又开了一个异步
` okHttp.get(contentUrl,new CallBack(){
public void success(string response{`
这里解析后我获得了图片链接于是我设置

 item.setImageUrl(imageUrl)imageUrl;
 }
 });
 return item ;
 }
 });

假如上面的代码包裹在一个方法中,返回实体类数据,并设置到Android界面,可是第二个异步还没执行完,第一个异步获取的结果就已经返回了,我设置到界面的图片链接就为空。

我知道异步不阻塞UI怎么保证第二个异步中的数据设置到MessageItem中在返回呢?

展开
收起
爵霸 2016-03-25 10:49:26 3174 0
1 条回答
写回答
取消 提交回答
  • 可以利用handler来进行这种异步的操作

    2019-07-17 19:13:47
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Python第五讲——关于爬虫如何做js逆向的思路 立即下载
“静态调用链路发现”应用场景分析及实践探索 立即下载
Android内存泄露自动化链路分析组件——Probe 立即下载