diff options
author | ByteHamster <info@bytehamster.com> | 2019-04-27 10:50:13 +0200 |
---|---|---|
committer | ByteHamster <info@bytehamster.com> | 2019-04-27 10:50:13 +0200 |
commit | 5d124c476a8167e6b70494481596ecceb3436cf9 (patch) | |
tree | 0d8cfd4ac92430ce04fef838cc22912338faa5cf /core | |
parent | 881578ee4181118d075f1e6c0812c54cf37982db (diff) | |
download | AntennaPod-5d124c476a8167e6b70494481596ecceb3436cf9.zip |
Fixed sleep timer ANR (Closes #3139)
Diffstat (limited to 'core')
-rw-r--r-- | core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceTaskManager.java | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceTaskManager.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceTaskManager.java index 0c0ee23c6..730ae7734 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceTaskManager.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceTaskManager.java @@ -191,8 +191,7 @@ public class PlaybackServiceTaskManager { sleepTimerFuture.cancel(true); } sleepTimer = new SleepTimer(waitingTime, shakeToReset, vibrate); - Runnable runnable = useMainThreadIfNecessary(sleepTimer); - sleepTimerFuture = schedExecutor.schedule(runnable, 0, TimeUnit.MILLISECONDS); + sleepTimerFuture = schedExecutor.schedule(sleepTimer, 0, TimeUnit.MILLISECONDS); } /** @@ -321,6 +320,7 @@ public class PlaybackServiceTaskManager { private final boolean shakeToReset; private final boolean vibrate; private ShakeListener shakeListener; + private Handler handler; public SleepTimer(long waitingTime, boolean shakeToReset, boolean vibrate) { super(); @@ -328,6 +328,7 @@ public class PlaybackServiceTaskManager { this.timeLeft = waitingTime; this.shakeToReset = shakeToReset; this.vibrate = vibrate; + this.handler = new Handler(); // Use the same thread for callbacks (ExoPlayer) } @Override @@ -353,7 +354,7 @@ public class PlaybackServiceTaskManager { if(shakeListener == null && shakeToReset) { shakeListener = new ShakeListener(context, this); } - callback.onSleepTimerAlmostExpired(); + handler.post(callback::onSleepTimerAlmostExpired); notifiedAlmostExpired = true; } if (timeLeft <= 0) { @@ -363,7 +364,7 @@ public class PlaybackServiceTaskManager { shakeListener = null; } if (!Thread.currentThread().isInterrupted()) { - callback.onSleepTimerExpired(); + handler.post(callback::onSleepTimerExpired); } else { Log.d(TAG, "Sleep timer interrupted"); } @@ -381,8 +382,10 @@ public class PlaybackServiceTaskManager { } public void onShake() { - setSleepTimer(waitingTime, shakeToReset, vibrate); - callback.onSleepTimerReset(); + handler.post(() -> { + setSleepTimer(waitingTime, shakeToReset, vibrate); + callback.onSleepTimerReset(); + }); shakeListener.pause(); shakeListener = null; } |