Java Android-正确的多线程/UI更新
我有一个将要访问web的应用程序。我决定使用SpringAndroid作为RestAPI,在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
线程的帮助下,我已经完成了这个简单的演示。我的问题是,如何将其更改为填充实际的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
非常感谢,这篇无痛线程文章正是我所需要的<代码>异步任务
就是这样!非常感谢,这篇无痛线程文章正是我所需要的<代码>异步任务就是这样!