From a13772d856df8175577cf0d1f333faa74b3d0f2d Mon Sep 17 00:00:00 2001 From: M66B Date: Wed, 28 Dec 2022 12:53:08 +0100 Subject: [PATCH] Retry create worker thread --- .../main/java/eu/faircode/email/Helper.java | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/Helper.java b/app/src/main/java/eu/faircode/email/Helper.java index a2b7a993b8..69bd6af95b 100644 --- a/app/src/main/java/eu/faircode/email/Helper.java +++ b/app/src/main/java/eu/faircode/email/Helper.java @@ -297,10 +297,23 @@ public class Helper { @Override public Thread newThread(@NonNull Runnable runnable) { - Thread thread = new Thread(runnable); - thread.setName("FairEmail_bg_" + name + "_" + threadId.getAndIncrement()); - thread.setPriority(THREAD_PRIORITY_BACKGROUND); - return thread; + int delay = 1; + while (true) + try { + Thread thread = new Thread(runnable); + thread.setName("FairEmail_bg_" + name + "_" + threadId.getAndIncrement()); + thread.setPriority(THREAD_PRIORITY_BACKGROUND); + return thread; + } catch (OutOfMemoryError ex) { + Log.w(ex); + try { + Thread.sleep(delay * 1000L); + } catch (InterruptedException ignored) { + } + delay *= 2; + if (delay > 7) + throw ex; + } } };