Listen for data saver events

This commit is contained in:
M66B 2021-01-17 17:23:26 +01:00
parent b6cb1673f0
commit 1313005e2f
1 changed files with 21 additions and 0 deletions

View File

@ -181,6 +181,9 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
registerReceiver(idleModeChangedReceiver, new IntentFilter(PowerManager.ACTION_DEVICE_IDLE_MODE_CHANGED));
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
registerReceiver(dataSaverChanged, new IntentFilter(ConnectivityManager.ACTION_RESTRICT_BACKGROUND_CHANGED));
final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
DB db = DB.getInstance(this);
@ -745,6 +748,9 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
prefs.unregisterOnSharedPreferenceChangeListener(this);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
unregisterReceiver(dataSaverChanged);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
unregisterReceiver(idleModeChangedReceiver);
@ -2145,6 +2151,21 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences
}
};
private BroadcastReceiver dataSaverChanged = new BroadcastReceiver() {
@Override
@RequiresApi(api = Build.VERSION_CODES.N)
public void onReceive(Context context, Intent intent) {
Log.i("Received intent=" + intent +
" " + TextUtils.join(" ", Log.getExtras(intent.getExtras())));
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
Integer status = (cm == null ? null : cm.getRestrictBackgroundStatus());
EntityLog.log(context, "Data saver=" + status);
updateNetworkState(null, "datasaver");
}
};
private class MediatorState extends MediatorLiveData<List<TupleAccountNetworkState>> {
private boolean running = true;
private ConnectionHelper.NetworkState lastNetworkState = null;