mirror of
https://github.com/M66B/FairEmail.git
synced 2026-04-02 07:06:18 +02:00
Prevent duplicate threads
This commit is contained in:
@@ -790,6 +790,14 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences
|
||||
try {
|
||||
wlAccount.acquire();
|
||||
|
||||
final DB db = DB.getInstance(this);
|
||||
final ExecutorService executor =
|
||||
Helper.getBackgroundExecutor(1, "account_" + account.id);
|
||||
|
||||
long thread = Thread.currentThread().getId();
|
||||
Long currentThread = thread;
|
||||
db.account().setAccountThread(account.id, thread);
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
if (account.notify)
|
||||
account.createNotificationChannel(ServiceSynchronize.this);
|
||||
@@ -807,14 +815,11 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences
|
||||
Log.w(account.name + " backoff " + ex.toString());
|
||||
}
|
||||
|
||||
final DB db = DB.getInstance(this);
|
||||
final ExecutorService executor =
|
||||
Helper.getBackgroundExecutor(1, "account_" + account.id);
|
||||
|
||||
state.setBackoff(CONNECT_BACKOFF_START);
|
||||
while (state.isRunning()) {
|
||||
while (state.isRunning() &&
|
||||
currentThread != null && currentThread.equals(thread)) {
|
||||
state.reset();
|
||||
Log.i(account.name + " run");
|
||||
Log.i(account.name + " run thread=" + currentThread);
|
||||
|
||||
Handler handler = new Handler(getMainLooper());
|
||||
final List<TwoStateOwner> cowners = new ArrayList<>();
|
||||
@@ -1573,7 +1578,12 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences
|
||||
else if (backoff < CONNECT_BACKOFF_AlARM_MAX * 60)
|
||||
state.setBackoff(backoff * 2);
|
||||
}
|
||||
|
||||
currentThread = Thread.currentThread().getId();
|
||||
}
|
||||
|
||||
if (currentThread == null || !currentThread.equals(thread))
|
||||
Log.e(account.name + " orphan thread id=" + currentThread + "/" + thread);
|
||||
} finally {
|
||||
EntityLog.log(this, account.name + " stopped");
|
||||
wlAccount.release();
|
||||
|
||||
Reference in New Issue
Block a user