Я использую Kryonet для подключения клиентского приложения к серверному приложению.Приложение сервера имеет список объектов Dish, которые следует отправлять клиенту при добавлении нового.Это (на первый взгляд) работает правильно, так как метод, который правильно отправляет сообщение с сервера клиенту, вызывается только один раз.Однако на стороне клиента метод receive () в приемнике неоднократно вызывает метод setDishes, и содержимое блюд в клиенте колеблется между старым ArrayList и новым Arraylist.
Это код для прослушивателя.
kryonetClient.addListener(new Listener() {
public void received (Connection connection, Object object) {
if (object instanceof List) {
if (((ArrayList) object).size() > 0){
ArrayList recievedList = (ArrayList) object;
if (recievedList.get(0) instanceof Dish){
client.setDishes(recievedList);
}
}
}
}
});
И это код, который отправляет сообщение клиенту с сервера.
public void sendMessageToAll(List<Dish> dishes){
System.out.println(dishes);
System.out.println("SENDING DISHES");
if (kryonetServer.getConnections() != null && dishes != null){
kryonetServer.sendToAllTCP(dishes);
}
Для некоторыхпричина, слушатель неоднократно запускается, хотя я отправляю сообщение только один раз.