diff --git a/app/src/main/java/eu/faircode/email/ServiceTileUnseen.java b/app/src/main/java/eu/faircode/email/ServiceTileUnseen.java index a9206ea888..191049dd7c 100644 --- a/app/src/main/java/eu/faircode/email/ServiceTileUnseen.java +++ b/app/src/main/java/eu/faircode/email/ServiceTileUnseen.java @@ -69,6 +69,7 @@ public class ServiceTileUnseen extends TileService { @Override public void onDestroy() { + owner.destroy(); super.onDestroy(); } diff --git a/app/src/main/java/eu/faircode/email/TwoStateOwner.java b/app/src/main/java/eu/faircode/email/TwoStateOwner.java index 60a3520a54..05d2eedd44 100644 --- a/app/src/main/java/eu/faircode/email/TwoStateOwner.java +++ b/app/src/main/java/eu/faircode/email/TwoStateOwner.java @@ -19,7 +19,7 @@ public class TwoStateOwner implements LifecycleOwner { owner.getLifecycle().addObserver(new LifecycleObserver() { @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY) public void onDestroyed() { - registry.handleLifecycleEvent(Lifecycle.Event.ON_DESTROY); + destroy(); } }); } @@ -33,10 +33,15 @@ public class TwoStateOwner implements LifecycleOwner { } void restart() { - registry.handleLifecycleEvent(Lifecycle.Event.ON_DESTROY); + stop(); start(); } + void destroy() { + if (!registry.getCurrentState().equals(Lifecycle.State.DESTROYED)) + registry.handleLifecycleEvent(Lifecycle.Event.ON_DESTROY); + } + @NonNull @Override public Lifecycle getLifecycle() {