diff options
author | stefan-niedermann <info@niedermann.it> | 2019-12-14 00:20:31 +0300 |
---|---|---|
committer | stefan-niedermann <info@niedermann.it> | 2019-12-14 00:20:31 +0300 |
commit | 72fd49a31c2ed298e9f9ee58afcaf8097236dd99 (patch) | |
tree | f3f845ed3fcd1d00c2fb33783938332003c9ea56 /app/src/main/java | |
parent | 1e90cad2b2a8cfed31eed5e5ce5fe0fcb82f9e74 (diff) |
#230 Background synchronization
Make setting to en/disable the background sync (Off, 15 Minutes, 1 Hour, 6 Hours)
Diffstat (limited to 'app/src/main/java')
-rw-r--r-- | app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncWorker.java | 30 | ||||
-rw-r--r-- | app/src/main/java/it/niedermann/nextcloud/deck/ui/settings/SettingsFragment.java | 11 |
2 files changed, 33 insertions, 8 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncWorker.java b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncWorker.java index 1f6947461..a3dcc624d 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncWorker.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncWorker.java @@ -43,16 +43,30 @@ public class SyncWorker extends Worker { } public static void register(@NonNull Context context) { - Constraints constraints = new Constraints.Builder() - .setRequiredNetworkType(NetworkType.CONNECTED) - .build(); - PeriodicWorkRequest work = new PeriodicWorkRequest.Builder(SyncWorker.class, PeriodicWorkRequest.MIN_PERIODIC_INTERVAL_MILLIS, TimeUnit.MILLISECONDS) - .setConstraints(constraints) - .build(); - WorkManager.getInstance(context.getApplicationContext()).enqueueUniquePeriodicWork(SyncWorker.TAG, ExistingPeriodicWorkPolicy.KEEP, work); + SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context.getApplicationContext()); + String backgroundSync = sharedPreferences.getString(context.getString(R.string.pref_key_background_sync), context.getString(R.string.pref_value_background_15_minutes)); + if (!context.getString(R.string.pref_value_background_sync_off).equals(backgroundSync)) { + int repeatInterval = 15; + TimeUnit unit = TimeUnit.MINUTES; + if (context.getString(R.string.pref_value_background_1_hour).equals(backgroundSync)) { + repeatInterval = 1; + unit = TimeUnit.HOURS; + } else if (context.getString(R.string.pref_value_background_6_hours).equals(backgroundSync)) { + repeatInterval = 6; + unit = TimeUnit.HOURS; + } + Constraints constraints = new Constraints.Builder() + .setRequiredNetworkType(NetworkType.CONNECTED) + .build(); + PeriodicWorkRequest work = new PeriodicWorkRequest.Builder(SyncWorker.class, repeatInterval, unit) + .setConstraints(constraints).build(); + WorkManager.getInstance(context.getApplicationContext()).enqueueUniquePeriodicWork(SyncWorker.TAG, ExistingPeriodicWorkPolicy.REPLACE, work); + } else { + deregister(context); + } } - public static void deregister(@NonNull Context context) { + private static void deregister(@NonNull Context context) { WorkManager.getInstance(context.getApplicationContext()).cancelAllWorkByTag(TAG); } } diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/settings/SettingsFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/settings/SettingsFragment.java index bf9e13213..4925c447d 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/settings/SettingsFragment.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/settings/SettingsFragment.java @@ -2,6 +2,7 @@ package it.niedermann.nextcloud.deck.ui.settings; import android.app.Activity; import android.os.Bundle; +import android.preference.ListPreference; import android.preference.Preference; import android.preference.PreferenceFragment; import android.preference.SwitchPreference; @@ -13,6 +14,7 @@ import butterknife.ButterKnife; import it.niedermann.nextcloud.deck.Application; import it.niedermann.nextcloud.deck.DeckLog; import it.niedermann.nextcloud.deck.R; +import it.niedermann.nextcloud.deck.persistence.sync.SyncWorker; public class SettingsFragment extends PreferenceFragment { @@ -20,6 +22,8 @@ public class SettingsFragment extends PreferenceFragment { String prefKeyWifiOnly; @BindString(R.string.pref_key_dark_theme) String prefKeyDarkTheme; + @BindString(R.string.pref_key_background_sync) + String prefKeyBackgroundSync; @Override public void onCreate(@Nullable Bundle savedInstanceState) { @@ -45,5 +49,12 @@ public class SettingsFragment extends PreferenceFragment { getActivity().recreate(); return true; }); + + final ListPreference backgroundSyncPref = (ListPreference) findPreference(prefKeyBackgroundSync); + backgroundSyncPref.setOnPreferenceChangeListener((Preference preference, Object newValue) -> { + DeckLog.log("backgroundSync: " + newValue); + SyncWorker.register(getActivity().getApplicationContext()); + return true; + }); } } |