mirror of
https://github.com/M66B/FairEmail.git
synced 2026-04-13 12:33:42 +02:00
Tune keep-alive interval by default
This commit is contained in:
@@ -80,6 +80,7 @@ public class FragmentOptionsSynchronize extends FragmentBase implements SharedPr
|
||||
private TextView tvSubscriptionPro;
|
||||
private SwitchCompat swCheckMx;
|
||||
private SwitchCompat swCheckReply;
|
||||
private SwitchCompat swTuneKeepAlive;
|
||||
private Group grpExempted;
|
||||
|
||||
private AdapterAccountExempted adapter;
|
||||
@@ -88,7 +89,7 @@ public class FragmentOptionsSynchronize extends FragmentBase implements SharedPr
|
||||
"enabled", "poll_interval", "schedule", "schedule_start", "schedule_end",
|
||||
"sync_nodate", "sync_unseen", "sync_flagged", "delete_unseen", "sync_kept", "gmail_thread_id",
|
||||
"sync_folders", "sync_shared_folders", "subscriptions",
|
||||
"check_mx", "check_reply"
|
||||
"check_mx", "check_reply", "tune_keep_alive"
|
||||
};
|
||||
|
||||
@Override
|
||||
@@ -129,6 +130,7 @@ public class FragmentOptionsSynchronize extends FragmentBase implements SharedPr
|
||||
tvSubscriptionPro = view.findViewById(R.id.tvSubscriptionPro);
|
||||
swCheckMx = view.findViewById(R.id.swCheckMx);
|
||||
swCheckReply = view.findViewById(R.id.swCheckReply);
|
||||
swTuneKeepAlive = view.findViewById(R.id.swTuneKeepAlive);
|
||||
grpExempted = view.findViewById(R.id.grpExempted);
|
||||
|
||||
setOptions();
|
||||
@@ -308,6 +310,13 @@ public class FragmentOptionsSynchronize extends FragmentBase implements SharedPr
|
||||
}
|
||||
});
|
||||
|
||||
swTuneKeepAlive.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
||||
@Override
|
||||
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
|
||||
prefs.edit().putBoolean("tune_keep_alive", checked).apply();
|
||||
}
|
||||
});
|
||||
|
||||
DB db = DB.getInstance(getContext());
|
||||
db.account().liveSynchronizingAccounts().observe(getViewLifecycleOwner(), new Observer<List<EntityAccount>>() {
|
||||
@Override
|
||||
@@ -397,6 +406,7 @@ public class FragmentOptionsSynchronize extends FragmentBase implements SharedPr
|
||||
swSubscriptions.setEnabled(pro);
|
||||
swCheckMx.setChecked(prefs.getBoolean("check_mx", false));
|
||||
swCheckReply.setChecked(prefs.getBoolean("check_reply", false));
|
||||
swTuneKeepAlive.setChecked(prefs.getBoolean("tune_keep_alive", true));
|
||||
}
|
||||
|
||||
private String formatHour(Context context, int minutes) {
|
||||
|
||||
@@ -1376,14 +1376,14 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences
|
||||
boolean first = true;
|
||||
while (state.isRunning()) {
|
||||
long idleTime = state.getIdleTime();
|
||||
boolean auto_optimize = prefs.getBoolean("auto_optimize", false);
|
||||
boolean optimize = (auto_optimize && !first &&
|
||||
boolean tune_keep_alive = prefs.getBoolean("tune_keep_alive", true);
|
||||
boolean tune = (tune_keep_alive && !first &&
|
||||
!account.keep_alive_ok && account.poll_interval > 9 &&
|
||||
Math.abs(idleTime - account.poll_interval * 60 * 1000L) < 60 * 1000L);
|
||||
if (auto_optimize && !first && !account.keep_alive_ok)
|
||||
if (tune_keep_alive && !first && !account.keep_alive_ok)
|
||||
EntityLog.log(ServiceSynchronize.this, account.name +
|
||||
" Optimize interval=" + account.poll_interval +
|
||||
" idle=" + idleTime + "/" + optimize);
|
||||
" Tune interval=" + account.poll_interval +
|
||||
" idle=" + idleTime + "/" + tune);
|
||||
try {
|
||||
if (!state.isRecoverable())
|
||||
throw new StoreClosedException(iservice.getStore(), "Unrecoverable");
|
||||
@@ -1414,7 +1414,7 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences
|
||||
Log.i(folder.name + " poll count=" + folder.poll_count);
|
||||
}
|
||||
} catch (Throwable ex) {
|
||||
if (optimize) {
|
||||
if (tune) {
|
||||
account.keep_alive_failed++;
|
||||
account.keep_alive_succeeded = 0;
|
||||
if (account.keep_alive_failed >= 3) {
|
||||
@@ -1433,7 +1433,7 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences
|
||||
throw ex;
|
||||
}
|
||||
|
||||
if (optimize) {
|
||||
if (tune) {
|
||||
account.keep_alive_failed = 0;
|
||||
account.keep_alive_succeeded++;
|
||||
db.account().setAccountKeepAliveValues(account.id,
|
||||
|
||||
Reference in New Issue
Block a user