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