Merge "Guard against crashes from data saver listeners" into nyc-dev
This commit is contained in:
@@ -33,26 +33,31 @@ public class DataSaverController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void handleRestrictBackgroundChanged(boolean isDataSaving) {
|
private void handleRestrictBackgroundChanged(boolean isDataSaving) {
|
||||||
final int N = mListeners.size();
|
synchronized (mListeners) {
|
||||||
for (int i = 0; i < N; i++) {
|
for (int i = 0; i < mListeners.size(); i++) {
|
||||||
mListeners.get(i).onDataSaverChanged(isDataSaving);
|
mListeners.get(i).onDataSaverChanged(isDataSaving);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void addListener(Listener listener) {
|
public void addListener(Listener listener) {
|
||||||
|
synchronized (mListeners) {
|
||||||
mListeners.add(listener);
|
mListeners.add(listener);
|
||||||
if (mListeners.size() == 1) {
|
if (mListeners.size() == 1) {
|
||||||
mPolicyManager.registerListener(mPolicyListener);
|
mPolicyManager.registerListener(mPolicyListener);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
listener.onDataSaverChanged(isDataSaverEnabled());
|
listener.onDataSaverChanged(isDataSaverEnabled());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void remListener(Listener listener) {
|
public void remListener(Listener listener) {
|
||||||
|
synchronized (mListeners) {
|
||||||
mListeners.remove(listener);
|
mListeners.remove(listener);
|
||||||
if (mListeners.size() == 0) {
|
if (mListeners.size() == 0) {
|
||||||
mPolicyManager.unregisterListener(mPolicyListener);
|
mPolicyManager.unregisterListener(mPolicyListener);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isDataSaverEnabled() {
|
public boolean isDataSaverEnabled() {
|
||||||
return mPolicyManager.getRestrictBackground();
|
return mPolicyManager.getRestrictBackground();
|
||||||
|
|||||||
Reference in New Issue
Block a user