需要异步任务的帮助-Android应用程序
嘿,我有一个应用程序,它使用defaulthttpclient登录到几个站点,我发现我需要使用AsyncTask,因为请求阻塞了UI线程。在我的代码中,我创建了一个state类的实例,即state state=new O2State();不同的站点具有不同的状态 然后调用state.logon(字符串用户名、字符串密码);它返回一个包含结果详细信息的字符串,因此:需要异步任务的帮助-Android应用程序,android,multithreading,http,android-asynctask,Android,Multithreading,Http,Android Asynctask,嘿,我有一个应用程序,它使用defaulthttpclient登录到几个站点,我发现我需要使用AsyncTask,因为请求阻塞了UI线程。在我的代码中,我创建了一个state类的实例,即state state=new O2State();不同的站点具有不同的状态 然后调用state.logon(字符串用户名、字符串密码);它返回一个包含结果详细信息的字符串,因此: String result = state.logon(username, password); 我一直在尝试实现asynctas
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似乎需要一个参数列表。我也不熟悉这个时间段的方法参数声明
第二:
我不确定线程执行完毕后如何返回结果字符串。我是否应该创建一个“DothisWhenThreadisFinished(字符串结果)”并从onPostExecute调用它
无论如何,我希望这不是太混乱阅读,我真的很感激你能提供任何帮助。
谢谢,如果您不需要参数,只需指定类型(例如字符串)并忽略它,或者您可以使用Void类(注意大写V) 对于如何将控件返回到UI线程以反映更新,您的建议是一个很好的方法。i、 e.在onPostExecute()中,调用活动上的方法以更新UI 作为一般规则,如果任何操作需要超过几百毫秒,请使用单独的线程。您可能还希望使用旋转进度指示器来显示应用程序正在执行某些操作
(当人们回答你的问题时,总是对你喜欢的问题进行评分,并选择一个作为“最佳”答案。这样做你会得到分数,以后会对其他人有所帮助)。@Oille C嘿,非常感谢,实际上我自己对参数做了很多整理,但仍然不知道如何将结果发送回UI线程,因此,很高兴知道我的想法是有意义的:-)我有任务启动和取消一个进度对话,并且一切正常。我只是不确定如何引用当前活动中的方法。我将对活动的引用传递给tasks构造函数,但是“activity.displayLoginResults();”但是我得到的是“对于类型活动错误未定义”。有什么建议吗?@oillec干杯,事实上,问题是我把血腥的方法设定为私人的哈哈。Was作为一个独立类,活动作为引用传递。谢谢你的建议!