mirror of
https://github.com/M66B/FairEmail.git
synced 2026-04-01 14:46:31 +02:00
Send connectivity backoff
This commit is contained in:
@@ -32,7 +32,6 @@ import android.net.Network;
|
||||
import android.net.NetworkCapabilities;
|
||||
import android.net.NetworkRequest;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.os.PowerManager;
|
||||
import android.text.TextUtils;
|
||||
|
||||
@@ -80,6 +79,7 @@ public class ServiceSend extends ServiceBase implements SharedPreferences.OnShar
|
||||
|
||||
private static final int PI_SEND = 1;
|
||||
private static final int RETRY_MAX = 3;
|
||||
private static final int CONNECTIVITY_DELAY = 5000; // milliseconds
|
||||
|
||||
@Override
|
||||
public void onCreate() {
|
||||
@@ -174,6 +174,8 @@ public class ServiceSend extends ServiceBase implements SharedPreferences.OnShar
|
||||
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
|
||||
cm.unregisterNetworkCallback(networkCallback);
|
||||
|
||||
handler.removeCallbacks(_checkConnectivity);
|
||||
|
||||
owner.stop();
|
||||
handling.clear();
|
||||
|
||||
@@ -281,52 +283,47 @@ public class ServiceSend extends ServiceBase implements SharedPreferences.OnShar
|
||||
};
|
||||
|
||||
private void checkConnectivity() {
|
||||
if (Looper.myLooper() == Looper.getMainLooper())
|
||||
_checkConnectivity();
|
||||
else
|
||||
handler.post(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
_checkConnectivity();
|
||||
handler.postDelayed(_checkConnectivity, CONNECTIVITY_DELAY);
|
||||
}
|
||||
|
||||
private Runnable _checkConnectivity = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
Network active = ConnectionHelper.getActiveNetwork(ServiceSend.this);
|
||||
boolean restart = !Objects.equals(lastActive, active);
|
||||
if (restart) {
|
||||
lastActive = active;
|
||||
EntityLog.log(ServiceSend.this, "Service send active=" + active);
|
||||
|
||||
if (lastSuitable) {
|
||||
EntityLog.log(ServiceSend.this, "Service send restart");
|
||||
lastSuitable = false;
|
||||
owner.stop();
|
||||
handling.clear();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private void _checkConnectivity() {
|
||||
Network active = ConnectionHelper.getActiveNetwork(this);
|
||||
boolean restart = !Objects.equals(lastActive, active);
|
||||
if (restart) {
|
||||
lastActive = active;
|
||||
EntityLog.log(this, "Service send active=" + active);
|
||||
boolean suitable = ConnectionHelper.getNetworkState(ServiceSend.this).isSuitable();
|
||||
if (lastSuitable != suitable) {
|
||||
lastSuitable = suitable;
|
||||
EntityLog.log(ServiceSend.this, "Service send suitable=" + suitable);
|
||||
|
||||
if (lastSuitable) {
|
||||
EntityLog.log(this, "Service send restart");
|
||||
lastSuitable = false;
|
||||
owner.stop();
|
||||
handling.clear();
|
||||
try {
|
||||
NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
|
||||
nm.notify(Helper.NOTIFICATION_SEND, getNotificationService().build());
|
||||
} catch (Throwable ex) {
|
||||
Log.w(ex);
|
||||
}
|
||||
|
||||
if (suitable)
|
||||
owner.start();
|
||||
else {
|
||||
owner.stop();
|
||||
handling.clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
boolean suitable = ConnectionHelper.getNetworkState(this).isSuitable();
|
||||
if (lastSuitable != suitable) {
|
||||
lastSuitable = suitable;
|
||||
EntityLog.log(this, "Service send suitable=" + suitable);
|
||||
|
||||
try {
|
||||
NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
|
||||
nm.notify(Helper.NOTIFICATION_SEND, getNotificationService().build());
|
||||
} catch (Throwable ex) {
|
||||
Log.w(ex);
|
||||
}
|
||||
|
||||
if (suitable)
|
||||
owner.start();
|
||||
else {
|
||||
owner.stop();
|
||||
handling.clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
private void processOperations(List<TupleOperationEx> ops) {
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user