(Android)线程httpClient任务,没有阻止UI?

时间:2011-05-30 18:06:41

标签: android multithreading httpclient android-asynctask fetch

我已经根据用户输入制作了一个从互联网上获取网页的应用程序。提取有不同的步骤:使用来自edittext的String作为参数发布,经过一些解析后,它返回一个在AlertDialog中显示的名称数组。当用户选择一个时,它会使用该String作为参数创建另一个帖子 这有效,但现在我想让它成为Threaded(或类似),这样UI就不会没有响应。 我尝试过Threads,Runnables和AsyncTask,但是我找不到一个构造来获取单个Thread中的提取,并且还能够返回该数组并选择一个名称,而无需创建我的HttpClient的新实例。这会抹掉你看到的Cookies ......

我花了大约一个星期来搞清楚这一点,但就是看不到它:(

所以任何人都有了主意?谢谢!

2 个答案:

答案 0 :(得分:2)

对于每个HTTP访问,您可以创建一个单独的AsyncTask子类,然后依次实例化它们中的每一个,并执行它们。在网上有很多关于如何使用AsyncTask访问HTTP的例子,例如: herehere(仅限谷歌用this之类的内容)。

要掌握的主要思想是在AsyncTask的doInBackground方法体内进行所有与网络相关的操作。

正如Ted Hopp所说,你可以让HttpClient实例成为你的Activity的私有成员(或任何类持有两个AsyncTasks),这样第一个AsyncTask就会创建它,第二个一个人可以使用相同的。

答案 1 :(得分:0)

您可以使用两个AsyncTask子类,每个请求一个。为子类提供对存储HttpClient对象的activity类中的变量的访问。