Fix DataSaverBackend objects created on background threads
Add the main looper to the handler created with each DataSaverBackend to avoid crashes when the objects are created on background threads. Bug: 62022517 Test: make RunSettingsRoboTests Change-Id: I7396107e4ed06982c8cd300912ce1f4e3c63df4c Merged-In: Ie5ffabbfbe7660761527b3ecd51e6bc5a43c1ace
This commit is contained in:
@@ -18,6 +18,7 @@ import android.content.Context;
|
||||
import android.net.INetworkPolicyListener;
|
||||
import android.net.NetworkPolicyManager;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.os.RemoteException;
|
||||
import android.util.SparseIntArray;
|
||||
|
||||
@@ -38,7 +39,7 @@ public class DataSaverBackend {
|
||||
private final Context mContext;
|
||||
private final MetricsFeatureProvider mMetricsFeatureProvider;
|
||||
|
||||
private final Handler mHandler = new Handler();
|
||||
private final Handler mHandler = new Handler(Looper.getMainLooper());
|
||||
private final NetworkPolicyManager mPolicyManager;
|
||||
private final ArrayList<Listener> mListeners = new ArrayList<>();
|
||||
private SparseIntArray mUidPolicies = new SparseIntArray();
|
||||
@@ -194,12 +195,7 @@ public class DataSaverBackend {
|
||||
|
||||
@Override
|
||||
public void onUidPoliciesChanged(final int uid, final int uidPolicies) {
|
||||
mHandler.post(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
handleUidPoliciesChanged(uid, uidPolicies);
|
||||
}
|
||||
});
|
||||
mHandler.post(() -> handleUidPoliciesChanged(uid, uidPolicies));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -208,12 +204,7 @@ public class DataSaverBackend {
|
||||
|
||||
@Override
|
||||
public void onRestrictBackgroundChanged(final boolean isDataSaving) throws RemoteException {
|
||||
mHandler.post(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
handleRestrictBackgroundChanged(isDataSaving);
|
||||
}
|
||||
});
|
||||
mHandler.post(() -> handleRestrictBackgroundChanged(isDataSaving));
|
||||
}
|
||||
};
|
||||
|
||||
|
@@ -0,0 +1,21 @@
|
||||
package com.android.settings.testutils.shadow;
|
||||
|
||||
import com.android.settings.datausage.DataSaverBackend;
|
||||
import org.robolectric.annotation.Implementation;
|
||||
import org.robolectric.annotation.Implements;
|
||||
|
||||
@Implements(DataSaverBackend.class)
|
||||
public class ShadowDataSaverBackend {
|
||||
|
||||
private static boolean isEnabled = true;
|
||||
|
||||
@Implementation
|
||||
public boolean isDataSaverEnabled() {
|
||||
return isEnabled;
|
||||
}
|
||||
|
||||
@Implementation
|
||||
public void setDataSaverEnabled(boolean enabled) {
|
||||
isEnabled = enabled;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user