From b741ba72bb17c266f6b65d9f3b1ec462ef81acc3 Mon Sep 17 00:00:00 2001 From: FurWaz <fur.waz06@gmail.com> Date: Tue, 13 Dec 2022 13:24:04 +0100 Subject: [PATCH] Set building saving async to avoid lag --- .../src/main/java/Common/BuildingManager.java | 33 +++++++++++-------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/Sources/app/src/main/java/Common/BuildingManager.java b/Sources/app/src/main/java/Common/BuildingManager.java index e8f7c6e..d98725e 100644 --- a/Sources/app/src/main/java/Common/BuildingManager.java +++ b/Sources/app/src/main/java/Common/BuildingManager.java @@ -15,6 +15,8 @@ import java.io.ObjectOutputStream; import java.util.ArrayList; import java.util.List; import java.util.Locale; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; import Structures.BuildingInfo; @@ -76,22 +78,25 @@ public class BuildingManager { // saves the given building to the file system public static void saveBuilding(BuildingInfo building) { new File(save_dir, building.getName()).delete(); + ExecutorService executor = Executors.newSingleThreadExecutor(); + executor.execute(() -> { + try { - try { - FileOutputStream outputStream = new FileOutputStream( new File(save_dir, building.getName()) ); - ObjectOutputStream obStream = new ObjectOutputStream(outputStream); - obStream.writeObject(building); - obStream.close(); - outputStream.close(); - } catch( Exception e ) { - Toast.makeText(context, "Error saving building "+building.getName()+": "+e.toString(), Toast.LENGTH_SHORT).show(); - } + FileOutputStream outputStream = new FileOutputStream( new File(save_dir, building.getName()) ); + ObjectOutputStream obStream = new ObjectOutputStream(outputStream); + obStream.writeObject(building); + obStream.close(); + outputStream.close(); + } catch( Exception e ) { + Toast.makeText(context, "Error saving building "+building.getName()+": "+e.toString(), Toast.LENGTH_SHORT).show(); + } - int index = BuildingManager.buildings.indexOf(building); - if (index != -1) { - BuildingManager.buildings.remove(index); - } - BuildingManager.buildings.add(building); + int index = BuildingManager.buildings.indexOf(building); + if (index != -1) { + BuildingManager.buildings.remove(index); + } + BuildingManager.buildings.add(building); + }); } // saves all the buildings to the file system -- GitLab