diff --git a/app/src/main/java/eu/faircode/email/AdapterFolder.java b/app/src/main/java/eu/faircode/email/AdapterFolder.java index fe04598083..296b662984 100644 --- a/app/src/main/java/eu/faircode/email/AdapterFolder.java +++ b/app/src/main/java/eu/faircode/email/AdapterFolder.java @@ -291,7 +291,7 @@ public class AdapterFolder extends RecyclerView.Adapter 0 && folder.childs > 0 && !folder.collapsed) { DB db = DB.getInstance(context); cowner.start(); @@ -737,6 +737,11 @@ public class AdapterFolder extends RecyclerView.Adapter>() { @Override public void onChanged(@Nullable List attachments) { @@ -3063,7 +3066,7 @@ public class AdapterMessage extends RecyclerView.Adapter selectionTracker) { diff --git a/app/src/main/java/eu/faircode/email/TwoStateOwner.java b/app/src/main/java/eu/faircode/email/TwoStateOwner.java index 94452fe2fa..cd1d43d1e4 100644 --- a/app/src/main/java/eu/faircode/email/TwoStateOwner.java +++ b/app/src/main/java/eu/faircode/email/TwoStateOwner.java @@ -15,19 +15,7 @@ public class TwoStateOwner implements LifecycleOwner { TwoStateOwner(String aname) { name = aname; - - // Initialize - registry = new LifecycleRegistry(this); - registry.markState(Lifecycle.State.CREATED); - - // Logging - registry.addObserver(new LifecycleObserver() { - @OnLifecycleEvent(Lifecycle.Event.ON_ANY) - public void onAny() { - if (BuildConfig.DEBUG) - Log.i("LifeCycle " + name + " state=" + registry.getCurrentState()); - } - }); + create(); } TwoStateOwner(LifecycleOwner owner, String aname) { @@ -44,6 +32,20 @@ public class TwoStateOwner implements LifecycleOwner { }); } + private void create() { + // Initialize + registry = new LifecycleRegistry(this); + registry.addObserver(new LifecycleObserver() { + @OnLifecycleEvent(Lifecycle.Event.ON_ANY) + public void onAny() { + if (BuildConfig.DEBUG) + Log.i("LifeCycle " + name + " state=" + registry.getCurrentState() + " " + registry); + } + }); + + registry.markState(Lifecycle.State.CREATED); + } + void start() { registry.markState(Lifecycle.State.STARTED); } @@ -57,6 +59,11 @@ public class TwoStateOwner implements LifecycleOwner { start(); } + void recreate() { + destroy(); + create(); + } + void destroy() { Lifecycle.State state = registry.getCurrentState(); if (!state.equals(Lifecycle.State.CREATED))