比如我定义了一个实体类,如下
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中在返回呢?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。