Merge "Cache the current value of background-data."
diff --git a/services/java/com/android/server/ConnectivityService.java b/services/java/com/android/server/ConnectivityService.java
index a84ba78..5eb42e7 100644
--- a/services/java/com/android/server/ConnectivityService.java
+++ b/services/java/com/android/server/ConnectivityService.java
@@ -59,6 +59,7 @@
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.Collection;
+import java.util.concurrent.atomic.AtomicBoolean;
import java.util.GregorianCalendar;
import java.util.List;
@@ -113,6 +114,8 @@
private boolean mTestMode;
private static ConnectivityService sServiceInstance;
+ private AtomicBoolean mBackgroundDataEnabled = new AtomicBoolean(true);
+
private static final int ENABLED = 1;
private static final int DISABLED = 0;
@@ -261,6 +264,9 @@
handlerThread.start();
mHandler = new MyHandler(handlerThread.getLooper());
+ mBackgroundDataEnabled.set(Settings.Secure.getInt(context.getContentResolver(),
+ Settings.Secure.BACKGROUND_DATA, 1) == 1);
+
// setup our unique device name
if (TextUtils.isEmpty(SystemProperties.get("net.hostname"))) {
String id = Settings.Secure.getString(context.getContentResolver(),
@@ -954,8 +960,7 @@
* @see ConnectivityManager#getBackgroundDataSetting()
*/
public boolean getBackgroundDataSetting() {
- return Settings.Secure.getInt(mContext.getContentResolver(),
- Settings.Secure.BACKGROUND_DATA, 1) == 1;
+ return mBackgroundDataEnabled.get();
}
/**
@@ -966,6 +971,8 @@
android.Manifest.permission.CHANGE_BACKGROUND_DATA_SETTING,
"ConnectivityService");
+ mBackgroundDataEnabled.set(allowBackgroundDataUsage);
+
mHandler.sendMessage(mHandler.obtainMessage(EVENT_SET_BACKGROUND_DATA,
(allowBackgroundDataUsage ? ENABLED : DISABLED), 0));
}