android-二层爬虫程序数据获取问题?

问题描述

二层爬虫程序数据获取问题?
比如我定义了一个实体类,如下
MessageItem{
string title;
string image Url;
……
}
省略号为get和set方法。

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

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

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

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

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

解决方案

可以利用handler来进行这种异步的操作

时间: 2024-09-17 04:08:03

android-二层爬虫程序数据获取问题?的相关文章

实时获取股票数据的android app应用程序源码分享_Android

最近学习Android应用开发,不知道写一个什么样的程序来练练手,正好最近股票很火,就一个App来实时获取股票数据,取名为Mystock.使用开发工具Android Studio,需要从Android官网下载,下载地址:http://developer.android.com/sdk/index.html.不幸的是Android是Google公司的,任何和Google公司相关的在国内都无法直接访问,只能通过VPN访问. 下图为Android Studio打开一个工程的截图:   下面按步介绍My

实时获取股票数据的android app应用程序源码分享

最近学习Android应用开发,不知道写一个什么样的程序来练练手,正好最近股票很火,就一个App来实时获取股票数据,取名为Mystock.使用开发工具Android Studio,需要从Android官网下载,下载地址:http://developer.android.com/sdk/index.html.不幸的是Android是Google公司的,任何和Google公司相关的在国内都无法直接访问,只能通过VPN访问. 下图为Android Studio打开一个工程的截图: 下面按步介绍Myst

c c++-求用c编写的一个简单的爬虫程序,高手赐教,不胜感激

问题描述 求用c编写的一个简单的爬虫程序,高手赐教,不胜感激 本人是初学者,要编写一爬虫程序,抓取60多万个网页上的信息,实在是无从下手,请高手给一个能看得懂的简单的爬虫程序学习用,多谢 解决方案 我也要写一个C爬虫,不过遇到了一些问题,比如58这样的网站,用getaddrinfo返回的ip无法连接,已经耽误了我好几天了,别的问题到还没遇到

蜘蛛/爬虫程序的多线程控制(C#语言)

程序|多线程|控制 在<爬虫/蜘蛛程序的制作(C#语言)>一文中,已经介绍了爬虫程序实现的基本方法,可以说,已经实现了爬虫的功能.只是它存在一个效率问题,下载速度可能很慢.这是两方面的原因造成的: 1.       分析和下载不能同步进行.在<爬虫/蜘蛛程序的制作(C#语言)>中已经介绍了爬虫程序的两个步骤:分析和下载.在单线程的程序中,两者是无法同时进行的.也就是说,分析时会造成网络空闲,分析的时间越长,下载的效率越低.反之也是一样,下载时无法同时进行分析,只有停下下载后才能进行

C#实现蜘蛛/爬虫程序的多线程控制

在<爬虫/蜘蛛程序的制作(C#语言)>一文中,已经介绍了爬虫程序实现的基本方法,可以说,已经实现了爬虫的功能.只是它存在一个效率问题,下载速度可能很慢.这是两方面的原因造成的: 1.分析和下载不能同步进行.在<爬虫/蜘蛛程序的制作(C#语言)>中已经介绍了爬虫程序的两个步骤:分析和下载.在单线程的程序中,两者是无法同时进行的.也就是说,分析时会造成网络空闲,分析的时间越长,下载的效率越低.反之也是一样,下载时无法同时进行分析,只有停下下载后才能进行下一步的分析.问题浮出水面,我想大

qt-Qt For Android编译的程序实在是太大,怎么优化呢,一个基本的apk都有十兆左右了

问题描述 Qt For Android编译的程序实在是太大,怎么优化呢,一个基本的apk都有十兆左右了 Qt For Android编译的程序实在是太大,怎么优化呢,一个基本的apk都有十兆左右了 解决方案 Qt for Android 编译安卓原生可执行程序windows平台开发 QT for Android 应用程序QT for Android HelloWorld.apk!耶 解决方案二: 把必要的库去掉就可以了

android google map 程序中怎么获取mapkey,急需求救

问题描述 android google map 程序中怎么获取mapkey,急需求救 在网上找了很多教程但是给的网站翻墙后还是不存在. 在这个:https://developers.google.com/maps/signup?hl=zh-CN没有找到需要输入指纹的keytool. 我把别人写好的程序拿过来到我的机子上运行还是不行,我查看了确实安装了google api,但是还是才出现很多错误,求人指点,感激不尽!!!!!!!!!!!!! 解决方案 http://www.cnblogs.com/

Python 爬虫程序 PySpider

问题描述 PySipder 是一个 Python 爬虫程序演示地址:**://demo.pyspider.org/使用 Python 编写脚本,提供强大的 APIPython 2&3强大的 WebUI 和脚本编辑器.任务监控和项目**和结果查看支持 JavaScript 页面后端系统支持:MySQL, MongoDB, SQLite, Postgresql支持任务优先级.重试.定期抓取等分布式架构示例代码:from pyspider.libs.base_handler import * cl**

android虚拟机里程序一直停止运行

问题描述 android虚拟机里程序一直停止运行 ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=edu.nuist.zhangtong.baiduMap/.LoginActivity } logcat: 01-05 00:06:04.698: D/dalvikvm(1225): Not late-enabling Check