Merge "Fix sim status screen" into nyc-dev
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 6637d7e..f6c7957 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -1885,7 +1885,8 @@
android:label="@string/development_settings_title"
android:icon="@drawable/ic_settings_development"
android:taskAffinity="com.android.settings"
- android:parentActivityName="Settings">
+ android:parentActivityName="Settings"
+ android:enabled="false">
<intent-filter android:priority="1">
<action android:name="android.settings.APPLICATION_DEVELOPMENT_SETTINGS" />
<action android:name="com.android.settings.APPLICATION_DEVELOPMENT_SETTINGS" />
diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java
index 53c97b5..616fe39 100644
--- a/src/com/android/settings/SettingsActivity.java
+++ b/src/com/android/settings/SettingsActivity.java
@@ -1096,8 +1096,7 @@
enabled = false;
}
int state = pm.getComponentEnabledSetting(component);
- boolean isEnabled = state == PackageManager.COMPONENT_ENABLED_STATE_DEFAULT
- || state == PackageManager.COMPONENT_ENABLED_STATE_ENABLED;
+ boolean isEnabled = state == PackageManager.COMPONENT_ENABLED_STATE_ENABLED;
if (isEnabled != enabled) {
pm.setComponentEnabledSetting(component, enabled
? PackageManager.COMPONENT_ENABLED_STATE_ENABLED
diff --git a/src/com/android/settings/dashboard/SummaryLoader.java b/src/com/android/settings/dashboard/SummaryLoader.java
index 55d97df..780d68e 100644
--- a/src/com/android/settings/dashboard/SummaryLoader.java
+++ b/src/com/android/settings/dashboard/SummaryLoader.java
@@ -16,8 +16,14 @@
package com.android.settings.dashboard;
import android.app.Activity;
+import android.content.BroadcastReceiver;
import android.content.ComponentName;
-import android.os.*;
+import android.content.IntentFilter;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.HandlerThread;
+import android.os.Looper;
+import android.os.Message;
import android.os.Process;
import android.util.ArrayMap;
import android.util.Log;
@@ -45,6 +51,7 @@
private DashboardAdapter mAdapter;
private boolean mListening;
+ private ArrayList<BroadcastReceiver> mReceivers = new ArrayList<>();
public SummaryLoader(Activity activity, List<DashboardCategory> categories) {
mHandler = new Handler();
@@ -88,6 +95,14 @@
}
public void setListening(boolean listening) {
+ synchronized (mReceivers) {
+ // Unregister listeners immediately.
+ mListening = false;
+ for (int i = 0; i < mReceivers.size(); i++) {
+ mActivity.unregisterReceiver(mReceivers.get(i));
+ }
+ mReceivers.clear();
+ }
mWorker.obtainMessage(Worker.MSG_SET_LISTENING, listening ? 1 : 0, 0).sendToTarget();
}
@@ -128,13 +143,28 @@
return tile.metaData;
}
+ /**
+ * Registers a receiver and automatically unregisters it when the activity is stopping.
+ * This ensures that the receivers are unregistered immediately, since most summary loader
+ * operations are asynchronous.
+ */
+ public void registerReceiver(BroadcastReceiver receiver, IntentFilter filter) {
+ synchronized (mReceivers) {
+ if (!mListening) {
+ return;
+ }
+ mReceivers.add(receiver);
+ mActivity.registerReceiver(receiver, filter);
+ }
+ }
+
private synchronized void setListeningW(boolean listening) {
if (mListening == listening) return;
if (DEBUG) Log.d(TAG, "Listening " + listening);
+ mListening = listening;
for (SummaryProvider p : mSummaryMap.keySet()) {
p.setListening(listening);
}
- mListening = listening;
}
private synchronized void makeProviderW(Tile tile) {
diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java
index 08e27ec..8eb1759 100644
--- a/src/com/android/settings/wifi/WifiSettings.java
+++ b/src/com/android/settings/wifi/WifiSettings.java
@@ -28,7 +28,6 @@
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.res.Resources;
-import android.graphics.drawable.Drawable;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.NetworkInfo.State;
@@ -39,15 +38,12 @@
import android.os.Bundle;
import android.os.HandlerThread;
import android.os.Process;
-import android.os.RemoteException;
-import android.os.UserHandle;
import android.provider.Settings;
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceViewHolder;
import android.text.Spannable;
import android.text.style.TextAppearanceSpan;
import android.util.Log;
-import android.util.TypedValue;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
@@ -58,7 +54,6 @@
import android.widget.TextView;
import android.widget.TextView.BufferType;
import android.widget.Toast;
-
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.MetricsProto.MetricsEvent;
import com.android.settings.LinkifyUtils;
@@ -999,9 +994,7 @@
filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
filter.addAction(WifiManager.RSSI_CHANGED_ACTION);
- mContext.registerReceiver(this, filter);
- } else {
- mContext.unregisterReceiver(this);
+ mSummaryLoader.registerReceiver(this, filter);
}
}