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:
Matthew Fritze
2017-07-18 13:12:05 -07:00
parent 4f0e5f8395
commit 7c1825aa64
2 changed files with 25 additions and 13 deletions

View File

@@ -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));
}
};