Added restart interval option

pull/217/head
M66B 10 months ago
parent 29cb2c9c5b
commit 281d414056

@ -128,6 +128,7 @@ public class EmailService implements AutoCloseable {
static final int ENCRYPTION_NONE = 2;
final static int DEFAULT_CONNECT_TIMEOUT = 20; // seconds
static final int DEFAULT_RESTART_INTERVAL = 4 * 60; // seconds
final static boolean SEPARATE_STORE_CONNECTION = false;
private final static int SEARCH_TIMEOUT = 90 * 1000; // milliseconds

@ -194,6 +194,8 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
private SeekBar sbChunkSize;
private TextView tvThreadRange;
private SeekBar sbThreadRange;
private TextView tvRestartInterval;
private SeekBar sbRestartInterval;
private SwitchCompat swAutoScroll;
private SwitchCompat swUndoManager;
private SwitchCompat swBrowserZoom;
@ -298,7 +300,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
"sqlite_integrity_check", "wal", "sqlite_checkpoints", "sqlite_analyze", "sqlite_auto_vacuum", "sqlite_sync_extra", "sqlite_cache",
"legacy_queries",
"cache_lists", "oauth_tabs",
"start_delay", "range_size", "chunk_size", "thread_range",
"start_delay", "range_size", "chunk_size", "thread_range", "restart_interval",
"autoscroll_editor", "undo_manager",
"browser_zoom", "fake_dark",
"ignore_formatted_size",
@ -461,6 +463,8 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
sbChunkSize = view.findViewById(R.id.sbChunkSize);
tvThreadRange = view.findViewById(R.id.tvThreadRange);
sbThreadRange = view.findViewById(R.id.sbThreadRange);
tvRestartInterval = view.findViewById(R.id.tvRestartInterval);
sbRestartInterval = view.findViewById(R.id.sbRestartInterval);
swAutoScroll = view.findViewById(R.id.swAutoScroll);
swUndoManager = view.findViewById(R.id.swUndoManager);
swBrowserZoom = view.findViewById(R.id.swBrowserZoom);
@ -1394,6 +1398,23 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
}
});
sbRestartInterval.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
prefs.edit().putInt("restart_interval", progress * 10).apply();
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// Do nothing
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// Do nothing
}
});
swAutoScroll.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
@ -2540,6 +2561,10 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
tvThreadRange.setText(getString(R.string.title_advanced_thread_range, range));
sbThreadRange.setProgress(thread_range);
int restart_interval = prefs.getInt("restart_interval", EmailService.DEFAULT_RESTART_INTERVAL);
tvRestartInterval.setText(getString(R.string.title_advanced_restart_interval, restart_interval));
sbRestartInterval.setProgress(restart_interval / 10);
swAutoScroll.setChecked(prefs.getBoolean("autoscroll_editor", false));
swUndoManager.setChecked(prefs.getBoolean("undo_manager", false));
swBrowserZoom.setChecked(prefs.getBoolean("browser_zoom", false));

@ -160,7 +160,6 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences
private static final int FETCH_YIELD_DURATION = 50; // milliseconds
private static final long WATCHDOG_INTERVAL = 60 * 60 * 1000L; // milliseconds
private static final long MAX_QUOTA = 1000 * 1000 * 1000L; // KB
private static final int YAHOO_RESTART_INTERVAL = 120; // seconds
private static final String ACTION_NEW_MESSAGE_COUNT = BuildConfig.APPLICATION_ID + ".NEW_MESSAGE_COUNT";
@ -182,6 +181,7 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences
"tcp_keep_alive", // force reconnect
"ssl_harden", "ssl_harden_strict", "cert_strict", "cert_transparency", "check_names", "bouncy_castle", "bc_fips", // force reconnect
"experiments", "debug", "protocol", // force reconnect
//"restart_interval", // force reconnect
"auth_plain", "auth_login", "auth_ntlm", "auth_sasl", "auth_apop", // force reconnect
"keep_alive_poll", "empty_pool", "idle_done", // force reconnect
"exact_alarms" // force schedule
@ -1672,11 +1672,11 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences
if (account.keep_alive_noop) {
int timeout = prefs.getInt("timeout", EmailService.DEFAULT_CONNECT_TIMEOUT);
if (account.isYahoo() && timeout < YAHOO_RESTART_INTERVAL) {
int factor = YAHOO_RESTART_INTERVAL / timeout;
iservice.setRestartIdleInterval(timeout * factor);
} else
iservice.setRestartIdleInterval(timeout * 2 * 6); // 20 x 2 x 6 = 4 min
int restart_interval = prefs.getInt("restart_interval", EmailService.DEFAULT_RESTART_INTERVAL);
int factor = (timeout == 0 ? 0 : restart_interval / timeout);
int idle_interval = timeout * factor;
Log.i("Restart interval=" + restart_interval + " timeout=" + timeout + " factor=" + factor + " idle=" + idle_interval);
iservice.setRestartIdleInterval(idle_interval);
}
final Date lastStillHere = new Date(0);

@ -1303,6 +1303,29 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvThreadRange" />
<TextView
android:id="@+id/tvRestartInterval"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:layout_marginEnd="48dp"
android:text="@string/title_advanced_restart_interval"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/sbThreadRange" />
<SeekBar
android:id="@+id/sbRestartInterval"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:max="90"
android:min="0"
android:progress="24"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvRestartInterval" />
<androidx.appcompat.widget.SwitchCompat
android:id="@+id/swAutoScroll"
android:layout_width="0dp"
@ -1311,7 +1334,7 @@
android:text="@string/title_advanced_auto_scroll"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/sbThreadRange"
app:layout_constraintTop_toBottomOf="@id/sbRestartInterval"
app:switchPadding="12dp" />
<androidx.appcompat.widget.SwitchCompat

@ -966,6 +966,7 @@
<string name="title_advanced_range_size" translatable="false">Range size: %1$d</string>
<string name="title_advanced_chunk_size" translatable="false">Chunk size: %1$d</string>
<string name="title_advanced_thread_range" translatable="false">Thread range: %1$d days</string>
<string name="title_advanced_restart_interval" translatable="false">Restart interval: %1$d s</string>
<string name="title_advanced_auto_scroll" translatable="false">Auto scroll editor</string>
<string name="title_advanced_undo_manager" translatable="false">Use Android\'s undo manager</string>
<string name="title_advanced_browser_zoom" translatable="false">Use browser zoom</string>

Loading…
Cancel
Save