Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在新线程中创建Web服务请求_Java_Android_Ios5_Android Ksoap2 - Fatal编程技术网

Java 在新线程中创建Web服务请求

Java 在新线程中创建Web服务请求,java,android,ios5,android-ksoap2,Java,Android,Ios5,Android Ksoap2,我正在使用ksoap2android生成和解析我的请求。无论如何,如果我想使用它,我必须异步使用它。因此,我选择为此创建一个新线程 看起来是这样的,我没有发布我所有的逻辑请求和解析,因为在这种情况下它并不重要 new Thread(new Runnable() { public void run() { String answer = WebServiceRequests.About();

我正在使用ksoap2android生成和解析我的请求。无论如何,如果我想使用它,我必须异步使用它。因此,我选择为此创建一个新线程

看起来是这样的,我没有发布我所有的逻辑请求和解析,因为在这种情况下它并不重要

  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.AsyncTask

AsnycTask始终是第一个建议,如果您以前没有这样做过,请阅读以下示例代码:

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();