From 100197d1a92d03155fc2a8aa7a91dca198386fd0 Mon Sep 17 00:00:00 2001 From: Redirion Date: Mon, 4 Mar 2019 10:24:08 +0100 Subject: [PATCH] Cache duration String to improve performance In VideoPlayer the Duration String is cached effectively by setting it to the playbackSeekBar. As the playbackSeekBar doesn't exist in BackgroundPlayer, using two addition variables will reduce performance impact of notification updates by almost 50% and thus perform similar to VideoPlayer. This addresses issue #2170 --- .../java/org/schabi/newpipe/player/BackgroundPlayer.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/schabi/newpipe/player/BackgroundPlayer.java b/app/src/main/java/org/schabi/newpipe/player/BackgroundPlayer.java index 94b401f09..83ac85b06 100644 --- a/app/src/main/java/org/schabi/newpipe/player/BackgroundPlayer.java +++ b/app/src/main/java/org/schabi/newpipe/player/BackgroundPlayer.java @@ -275,6 +275,8 @@ public final class BackgroundPlayer extends Service { protected class BasePlayerImpl extends BasePlayer { @NonNull final private AudioPlaybackResolver resolver; + private int cachedDuration; + private String cachedDurationString; BasePlayerImpl(Context context) { super(context); @@ -351,8 +353,12 @@ public final class BackgroundPlayer extends Service { resetNotification(); if(Build.VERSION.SDK_INT >= 26 /*Oreo*/) updateNotificationThumbnail(); if (bigNotRemoteView != null) { + if(cachedDuration != duration) { + cachedDuration = duration; + cachedDurationString = getTimeString(duration); + } bigNotRemoteView.setProgressBar(R.id.notificationProgressBar, duration, currentProgress, false); - bigNotRemoteView.setTextViewText(R.id.notificationTime, getTimeString(currentProgress) + " / " + getTimeString(duration)); + bigNotRemoteView.setTextViewText(R.id.notificationTime, getTimeString(currentProgress) + " / " + cachedDurationString); } if (notRemoteView != null) { notRemoteView.setProgressBar(R.id.notificationProgressBar, duration, currentProgress, false);