From 9c7d97a379ae3ad76e9456999b04f6e6a7ba804d Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Tue, 24 Apr 2018 15:28:34 +0200 Subject: [PATCH] reschedule UpdateService based on data/wifi/interval preference changes JobScheduler also take network type into account. #1381 --- .../views/fragments/PreferencesFragment.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) 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 e02dd0dc9..3b0d931f8 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 @@ -72,6 +72,9 @@ public class PreferencesFragment extends PreferenceFragment private Preference updateAutoDownloadPref; private Preference updatePrivilegedExtensionPref; private long currentKeepCacheTime; + private int overWifiPrevious; + private int overDataPrevious; + private int updateIntervalPrevious; @Override public void onCreatePreferences(Bundle bundle, String s) { @@ -85,8 +88,11 @@ public class PreferencesFragment extends PreferenceFragment updatePrivilegedExtensionPref = findPreference(Preferences.PREF_UNINSTALL_PRIVILEGED_APP); overWifiSeekBar = (SeekBarPreference) findPreference(Preferences.PREF_OVER_WIFI); + overWifiPrevious = overWifiSeekBar.getValue(); overDataSeekBar = (SeekBarPreference) findPreference(Preferences.PREF_OVER_DATA); + overDataPrevious = overDataSeekBar.getValue(); updateIntervalSeekBar = (SeekBarPreference) findPreference(Preferences.PREF_UPDATE_INTERVAL); + updateIntervalPrevious = updateIntervalSeekBar.getValue(); ListPreference languagePref = (ListPreference) findPreference(Preferences.PREF_LANGUAGE); if (Build.VERSION.SDK_INT >= 24) { @@ -422,6 +428,13 @@ public class PreferencesFragment extends PreferenceFragment super.onPause(); getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this); Preferences.get().configureProxy(); + + if (updateIntervalPrevious != updateIntervalSeekBar.getValue()) { + UpdateService.schedule(getActivity()); + } else if (Build.VERSION.SDK_INT >= 21 && + (overWifiPrevious != overWifiSeekBar.getValue() || overDataPrevious != overDataSeekBar.getValue())) { + UpdateService.schedule(getActivity()); + } } @Override @@ -436,5 +449,4 @@ public class PreferencesFragment extends PreferenceFragment } } } - }