Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.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 Android-正确的多线程/UI更新_Java_Android_Multithreading_User Interface_Asynchronous - Fatal编程技术网

Java Android-正确的多线程/UI更新

Java Android-正确的多线程/UI更新,java,android,multithreading,user-interface,asynchronous,Java,Android,Multithreading,User Interface,Asynchronous,我有一个将要访问web的应用程序。我决定使用SpringAndroid作为RestAPI,在线程的帮助下,我已经完成了这个简单的演示。我的问题是,如何将其更改为填充实际的ListView,而不仅仅是记录对象的输出?这里的一些其他问题让我相信AsyncTask可能是答案,但我仍然有点困惑如何更新UI,因为据我所知,其他线程无法触及它 这里是我现在拥有的,减去创建RestTemplate并发出请求的函数,因为我认为这与此无关: public void onCreate( Bundle saved

我有一个将要访问web的应用程序。我决定使用SpringAndroid作为RestAPI,在
线程的帮助下,我已经完成了这个简单的演示。我的问题是,如何将其更改为填充实际的
ListView
,而不仅仅是记录对象的输出?这里的一些其他问题让我相信
AsyncTask
可能是答案,但我仍然有点困惑如何更新UI,因为据我所知,其他线程无法触及它

这里是我现在拥有的,减去创建RestTemplate并发出请求的函数,因为我认为这与此无关:

  public void onCreate( Bundle savedInstanceState )
  {
    super.onCreate( savedInstanceState );

    new Thread( new Runnable() {
      public void run()
      {
        // create a RestTemplate. This is used to communicate with the server.
        RestTemplate restTemplate = getRestTemplate();

        String url = "http://192.168.2.14:8888/";

        JSONData[] jsonData = restTemplate.getForObject( url, JSONData[].class );

        for( JSONData d : jsonData )
        {
          Log.d( "TEST", d.getName() + " " + d.getId() );
        }
      }
    } ).start();

    setContentView( R.layout.main );
  }

如果要从其他线程更改UI,可以使用Handler或Activity.runOnUiThread()。

如果要从其他线程更改UI,可以使用Handler或Activity.runOnUiThread()。

非常好的文章中列出了几个选项。
AsyncTask
是其中一个选项,它似乎适合您的需要,并且有几种方法可以在UI线程上运行,例如
onPreExecute
onPostExecute
onProgressUpdate
这篇文章中列出了几个选项。
AsyncTask
是其中一个选项,它似乎适合您的需要,并且有几种方法可以在UI线程上运行,例如
onPreExecute
onPostExecute
onProgressUpdate

非常感谢,这篇无痛线程文章正是我所需要的<代码>异步任务
就是这样!非常感谢,这篇无痛线程文章正是我所需要的<代码>异步任务就是这样!