diff options
author | Robert Henigan <robert.henigan@livio.io> | 2021-01-21 14:14:03 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-21 14:14:03 -0500 |
commit | 1f213c64e3c15b4644675e07d788ebdaec38a6c9 (patch) | |
tree | a5b6713e1858f65cec6212b7d15e3425fe951094 | |
parent | 6831235ba5e8c8df8ac6c66cfd86b4f31d845dab (diff) | |
parent | 004872204c6ee4534fc3b64aab61fc0430a28f8e (diff) | |
download | sdl_android-1f213c64e3c15b4644675e07d788ebdaec38a6c9.tar.gz |
Merge pull request #1602 from smartdevicelink/feature/issue_858
Remove handler from SdlRemoteDisplay
-rw-r--r-- | android/sdl_android/src/main/java/com/smartdevicelink/streaming/video/SdlRemoteDisplay.java | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/streaming/video/SdlRemoteDisplay.java b/android/sdl_android/src/main/java/com/smartdevicelink/streaming/video/SdlRemoteDisplay.java index f704bf769..a8238323b 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/streaming/video/SdlRemoteDisplay.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/streaming/video/SdlRemoteDisplay.java @@ -49,6 +49,10 @@ import com.smartdevicelink.util.DebugTool; import java.lang.reflect.Constructor; import java.util.concurrent.Callable; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.TimeUnit; /** * SdlRemoteDisplay is an abstract class that should be extended by developers to create their remote displays. @@ -64,7 +68,8 @@ public abstract class SdlRemoteDisplay extends Presentation { protected Window w; protected View mainView; - protected final Handler handler = new Handler(); + protected final ScheduledExecutorService executor = Executors.newScheduledThreadPool(1); + protected ScheduledFuture<?> refreshTaskScheduledFuture; protected final Handler uiHandler = new Handler(Looper.getMainLooper()); protected Callback callback; @@ -88,11 +93,13 @@ public abstract class SdlRemoteDisplay extends Presentation { } protected void startRefreshTask() { - handler.postDelayed(mStartRefreshTaskCallback, REFRESH_RATE_MS); + refreshTaskScheduledFuture = executor.scheduleAtFixedRate(mStartRefreshTaskCallback, REFRESH_RATE_MS, REFRESH_RATE_MS, TimeUnit.MILLISECONDS); } protected void stopRefreshTask() { - handler.removeCallbacks(mStartRefreshTaskCallback); + if (refreshTaskScheduledFuture != null) { + refreshTaskScheduledFuture.cancel(false); + } } protected final Runnable mStartRefreshTaskCallback = new Runnable() { @@ -103,8 +110,6 @@ public abstract class SdlRemoteDisplay extends Presentation { if (mainView != null) { mainView.invalidate(); } - - handler.postDelayed(this, REFRESH_RATE_MS); } }; |