Изменение http на https в приложении реагирования заставляет страницу постоянно обновляться на iOS с Safari

Вам необходимо соблюдать правила потоковой передачи Swing, которые вкратце кратко означают, что все выполняемые задачи, такие как ожидание и захват ваших данных, должны выполняться в фоновом потоке, и все вызовы Swing должны выполняться в потоке событий Swing , Используйте SwingWorker, чтобы помочь вам это сделать.

Пожалуйста, просмотрите Параллельность в Swing , чтобы увидеть учебник со всеми подробностями gory.

, например,

private class MySwingWorker extends SwingWorker {
  private byte[] buffer = new byte[2000];

  @Override
  protected Void doInBackground() throws Exception {
     while (true) {
        DatagramPacket incoming = new DatagramPacket(buffer, buffer.length);
        serverSocket.receive(incoming);

        String incomingMessage = new String(incoming.getData());
        publish(incomingMessage);
     }
     return null;
  }

  @Override
  protected void process(List chunks) {
     for (String chunk : chunks) {
        textArea.append("Client: " + chunk + "\n");
     }
  }
}

Другие предложения:

  • Вы вызываете execute() в SwingWorker для его запуска.
  • Я почти всегда добавляю PropertyChangeListener к своему работника перед его исполнением.
  • В этом слушателе я смотрю, как newValue является SwingWorker.StateValue.DONE.
  • Когда я сталкиваюсь с этим, я вызываю get() на свой SwingWorker, даже если он возвращает Void. Это поможет мне отследить и ответить на любые исключения, которые могли произойти в SwingWorker по мере его запуска.

2
задан David Ramsdale 4 March 2019 в 04:25
поделиться