From d62c7000a17dcbc551eda3087df8c6a9a2dec6a7 Mon Sep 17 00:00:00 2001 From: Robert Greenwalt Date: Wed, 29 Dec 2010 16:15:02 -0800 Subject: [PATCH] Cache the current value of background-data. The writing of the persistent setting is async, but we should still remember it so if somebody asks before the write completes we give the right answer. Makes the read faster too. bug:3312848 Change-Id: I864cb5f8d496d5bf9cbf0af9a71ca84da078f7c6 --- .../java/com/android/server/ConnectivityService.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/services/java/com/android/server/ConnectivityService.java b/services/java/com/android/server/ConnectivityService.java index a84ba785d0..5eb42e7d91 100644 --- a/services/java/com/android/server/ConnectivityService.java +++ b/services/java/com/android/server/ConnectivityService.java @@ -59,6 +59,7 @@ import java.net.InetAddress; 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 @@ public class ConnectivityService extends IConnectivityManager.Stub { 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 @@ public class ConnectivityService extends IConnectivityManager.Stub { 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 @@ public class ConnectivityService extends IConnectivityManager.Stub { * @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 @@ public class ConnectivityService extends IConnectivityManager.Stub { android.Manifest.permission.CHANGE_BACKGROUND_DATA_SETTING, "ConnectivityService"); + mBackgroundDataEnabled.set(allowBackgroundDataUsage); + mHandler.sendMessage(mHandler.obtainMessage(EVENT_SET_BACKGROUND_DATA, (allowBackgroundDataUsage ? ENABLED : DISABLED), 0)); }