嘿,我有一个应用程序使用defaulthttpclient登录到几个网站,我发现我需要使用AsyncTask作为请求阻塞UI线程。在我的代码中,我创建了一个状态类的实例,即State state = new O2State();与不同的网站不同的状态。需要帮助AsyncTasks - Android应用程序
然后我调用state.logon(String username,String password);返回包含结果这样的细节的字符串:
String result = state.logon(username, password);
我一直在试图实现asynctasks运行在另一个线程此代码,返回字符串回到UI线程上完成。这个想法是我会显示一个进度对话框,运行线程,并在完成后,会显示一个对话框的结果。
我一直在找这个例子:
public void onClick(View v) {
new DownloadImageTask().execute("http://example.com/image.png");
}
private class DownloadImageTask extends AsyncTask {
protected Bitmap doInBackground(String... urls) {
return loadImageFromNetwork(urls[0]);
}
protected void onPostExecute(Bitmap result) {
mImageView.setImageBitmap(result);
}
}
如果我坚持的是: 我不认为我需要任何参数,但是doinbackground似乎需要的参数列表。我也不熟悉这个方法参数声明的时间。
其次: 我不知道如何在线程完成执行时返回结果字符串。我应该创建一个“DoThisWhenTheThreadIsFinished(String result)”并从onPostExecute调用它吗?
无论如何,我希望这不是太混乱阅读,我非常感谢您可以提供任何帮助。 谢谢
@Oille C嘿非常感谢,我实际上对参数进行了很多排序,但仍然想知道如何将结果发送回UI线程,因此很好的了解我的想法是有道理的:-)我有任务启动和解散进度对话框,其工作正常。我只是不确定如何引用当前活动的方法。我将活动的引用传递给任务构造函数,但“activity.displayLoginResults();”但我得到“未定义的类型活动错误”。有什么建议么? – 2011-03-28 18:05:41
@Oille C干杯,实际上,问题是我把这个血腥的方法设置为私人哈哈。是作为一个独立的类与活动正在通过作为参考。 CHeersw的建议! – 2011-03-29 12:15:06