diff --git a/app/src/main/java/org/fdroid/fdroid/views/LiveSeekBarPreference.java b/app/src/main/java/org/fdroid/fdroid/views/LiveSeekBarPreference.java
index bffe3b784..f1fda57f7 100644
--- a/app/src/main/java/org/fdroid/fdroid/views/LiveSeekBarPreference.java
+++ b/app/src/main/java/org/fdroid/fdroid/views/LiveSeekBarPreference.java
@@ -5,10 +5,11 @@ import android.support.v7.preference.PreferenceViewHolder;
 import android.support.v7.preference.SeekBarPreference;
 import android.util.AttributeSet;
 import android.widget.SeekBar;
+import android.widget.TextView;
 import org.fdroid.fdroid.R;
 
 public class LiveSeekBarPreference extends SeekBarPreference {
-    private Runnable progressChangedRunnable;
+    private SeekBarLiveUpdater seekBarLiveUpdater;
     private boolean trackingTouch;
     private int value = -1;
 
@@ -33,7 +34,7 @@ public class LiveSeekBarPreference extends SeekBarPreference {
     }
 
     @Override
-    public void onBindViewHolder(PreferenceViewHolder holder) {
+    public void onBindViewHolder(final PreferenceViewHolder holder) {
         super.onBindViewHolder(holder);
 
         SeekBar seekbar = holder.itemView.findViewById(R.id.seekbar);
@@ -41,10 +42,13 @@ public class LiveSeekBarPreference extends SeekBarPreference {
             @Override
             public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                 value = progress;
-                if (progressChangedRunnable != null) {
-                    progressChangedRunnable.run();
+                if (seekBarLiveUpdater != null) {
+                    String message = seekBarLiveUpdater.seekBarUpdated(value);
+                    TextView summary = holder.itemView.findViewById(android.R.id.summary);
+                    if (summary != null) {
+                        summary.setText(message);
+                    }
                 }
-                value = progress;
                 if (fromUser && !trackingTouch) {
                     persistInt(value);
                 }
@@ -64,6 +68,13 @@ public class LiveSeekBarPreference extends SeekBarPreference {
         seekbar.setProgress(value);
     }
 
+    @Override
+    public void setValue(int value) {
+        super.setValue(value);
+        this.value = value;
+    }
+
+    @Override
     public int getValue() {
         if (value == -1) {
             value = super.getValue();
@@ -71,7 +82,11 @@ public class LiveSeekBarPreference extends SeekBarPreference {
         return value;
     }
 
-    public void setProgressChangedRunnable(Runnable runnable) {
-        progressChangedRunnable = runnable;
+    public void setSeekBarLiveUpdater(SeekBarLiveUpdater updater) {
+        seekBarLiveUpdater = updater;
+    }
+
+    public interface SeekBarLiveUpdater {
+        String seekBarUpdated(int position);
     }
 }
diff --git a/app/src/main/java/org/fdroid/fdroid/views/fragments/PreferencesFragment.java b/app/src/main/java/org/fdroid/fdroid/views/fragments/PreferencesFragment.java
index 180a850ff..574474f24 100644
--- a/app/src/main/java/org/fdroid/fdroid/views/fragments/PreferencesFragment.java
+++ b/app/src/main/java/org/fdroid/fdroid/views/fragments/PreferencesFragment.java
@@ -116,26 +116,26 @@ public class PreferencesFragment extends PreferenceFragment
 
         overWifiSeekBar = (LiveSeekBarPreference) findPreference(Preferences.PREF_OVER_WIFI);
         overWifiPrevious = overWifiSeekBar.getValue();
-        overWifiSeekBar.setProgressChangedRunnable(new Runnable() {
+        overWifiSeekBar.setSeekBarLiveUpdater(new LiveSeekBarPreference.SeekBarLiveUpdater() {
             @Override
-            public void run() {
-                updateSummary(overWifiSeekBar.getKey(), false);
+            public String seekBarUpdated(int position) {
+                return getNetworkSeekBarSummary(position);
             }
         });
         overDataSeekBar = (LiveSeekBarPreference) findPreference(Preferences.PREF_OVER_DATA);
         overDataPrevious = overDataSeekBar.getValue();
-        overDataSeekBar.setProgressChangedRunnable(new Runnable() {
+        overDataSeekBar.setSeekBarLiveUpdater(new LiveSeekBarPreference.SeekBarLiveUpdater() {
             @Override
-            public void run() {
-                updateSummary(overDataSeekBar.getKey(), false);
+            public String seekBarUpdated(int position) {
+                return getNetworkSeekBarSummary(position);
             }
         });
         updateIntervalSeekBar = (LiveSeekBarPreference) findPreference(Preferences.PREF_UPDATE_INTERVAL);
         updateIntervalPrevious = updateIntervalSeekBar.getValue();
-        updateIntervalSeekBar.setProgressChangedRunnable(new Runnable() {
+        updateIntervalSeekBar.setSeekBarLiveUpdater(new LiveSeekBarPreference.SeekBarLiveUpdater() {
             @Override
-            public void run() {
-                updateSummary(updateIntervalSeekBar.getKey(), false);
+            public String seekBarUpdated(int position) {
+                return getString(UPDATE_INTERVAL_NAMES[position]);
             }
         });
 
@@ -172,17 +172,21 @@ public class PreferencesFragment extends PreferenceFragment
         }
     }
 
+    private String getNetworkSeekBarSummary(int position) {
+        if (position == 0) {
+            return getString(R.string.over_network_never_summary);
+        } else if (position == 1) {
+            return getString(R.string.over_network_on_demand_summary);
+        } else if (position == 2) {
+            return getString(R.string.over_network_always_summary);
+        } else {
+            throw new IllegalArgumentException("Unknown seekbar position");
+        }
+    }
+
     private void setNetworkSeekBarSummary(SeekBarPreference seekBarPreference) {
         int position = seekBarPreference.getValue();
-        if (position == 0) {
-            seekBarPreference.setSummary(R.string.over_network_never_summary);
-        } else if (position == 1) {
-            seekBarPreference.setSummary(R.string.over_network_on_demand_summary);
-        } else if (position == 2) {
-            seekBarPreference.setSummary(R.string.over_network_always_summary);
-        } else {
-            throw new IllegalArgumentException("No such " + seekBarPreference.getTitle() + " position: " + position);
-        }
+        seekBarPreference.setSummary(getNetworkSeekBarSummary(position));
     }
 
     private void enableUpdateInverval() {