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

标签 java android multithreading user-interface asynchronous

我有一个将访问网络的应用程序。我决定使用 Spring Android 作为 RestAPI,并在 Thread 的帮助下让这个简单的演示工作。我的问题是,如何将其更改为填充实际的 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()。

关于java - Android - 正确的多线程/UI 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9702997/

相关文章:

java - mvn tomcat7 :deploy - Cannot invoke Tomcat manager: Broken pipe

Java信号量实现和设计相关问题

objective-c - 在后台线程中释放对象

java - NetBeans 8.0.2 Java "Project Folder already exists and is not empty"

java - SHIFT + ENTER 和 Java 中同一组件中的 ENTER

android - 工具栏菜单项总是溢出

android - string.xml 如果使用 % 后跟字符串两次,则指定多个替换

ruby-on-rails - 如何更改这些生产者-消费者微服务以允许并行处理?

Java : Is `@WebParam` optional?

android - 重复使用 Xamarin.Essentials.MediaPicker.CapturePhotoAsync 会在 Android 11 上重新启动我的应用程序