问题描述
|
我已经制作了一个可以根据用户输入从Internet上获取网页的应用程序,该程序可以正常工作。提取过程以不同的步骤进行:以edittext中的String作为参数进行发布,经过一些解析后返回的结果将在AlertDialog中显示一个名称数组。当用户选择一个时,它将使用该String作为参数发布另一篇文章。
这行得通,但是现在我想使其成为Threaded(或类似的),以便UI不会无响应。
我尝试了Threads,Runnables和AsyncTask,但是我只是无法找到一种结构来获取单个Thread中的内容,而且还能够返回该数组并选择一个名称,而无需创建HttpClient的新实例。这会清除您看到的Cookie ...
我花了整整一个星期的时间来解决这个问题,但只是看不到它:(
有人知道吗?谢谢 !
解决方法
对于每个HTTP访问,您可以创建一个单独的AsyncTask子类,然后依次实例化每个实例并执行它们。网路上有许多范例,说明如何使用AsyncTask存取HTTP,例如在这里或这里(只是谷歌这样的东西)。
在那里掌握的主要思想是在AsyncTask的“ 0”方法主体内进行所有与网络相关的操作。
正如Ted Hopp所说的,您可以让HttpClient实例成为Activity的私有成员(或拥有两个AsyncTasks的任何类),这样第一个AsyncTask将创建它,而第二个AsyncTask可以使用相同的对象。
, 您可以使用两个AsyncTask子类,每个请求一个。授予子类访问活动类中存储HttpClient对象的变量的权限。