Java 在新线程中创建Web服务请求
我正在使用ksoap2android生成和解析我的请求。无论如何,如果我想使用它,我必须异步使用它。因此,我选择为此创建一个新线程 看起来是这样的,我没有发布我所有的逻辑请求和解析,因为在这种情况下它并不重要Java 在新线程中创建Web服务请求,java,android,ios5,android-ksoap2,Java,Android,Ios5,Android Ksoap2,我正在使用ksoap2android生成和解析我的请求。无论如何,如果我想使用它,我必须异步使用它。因此,我选择为此创建一个新线程 看起来是这样的,我没有发布我所有的逻辑请求和解析,因为在这种情况下它并不重要 new Thread(new Runnable() { public void run() { String answer = WebServiceRequests.About();
new Thread(new Runnable() {
public void run() {
String answer = WebServiceRequests.About();
try{
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}).start();
所以我在应答字符串中得到请求,但现在如何更新我的GUI?当我尝试时,我得到一个异常,我无法在该线程中更新
请发布您的解决方案。如果您使用Handler或AsyncTask,甚至使用make来处理我的示例
谢谢。对于异步任务,Android提供了一个类AsyncTask 在这个类中,可以重写两个方法。第一种方法用于应该在后台的代码(不同的线程)。在第一个方法完成后,在UI线程上调用第二个方法
有关详细信息,请参阅android.os.AsyncTaskAsnycTask始终是第一个建议,如果您以前没有这样做过,请阅读以下示例代码:
private class MyAsyncTask extends AsyncTask<Void, Void, String> {
protected String doInBackground(Void... params) {
String answer = WebServiceRequests.About();
return answer;
}
protected void onPostExecute(String answer) {
// Update UI.
showDialog("Answer " + answer);
}
onPostExecute方法保证在将来某个时候,只要后台线程(AKA.doInBackground)完成,就会在UI线程上调用。底层框架为我们处理所有肮脏的工作
希望这有帮助
new MyAsyncTask().execute();