Merge "Attempt to fix receiver registering problems" into nyc-dev

am: 8dbc166353

* commit '8dbc16635341e7c52454d3faf806dc228502f265':
  Attempt to fix receiver registering problems

Change-Id: I36fd2eba3c451a3c509ea0e5da9611a91af239e6
This commit is contained in:
Jason Monk
2016-04-22 16:08:55 +00:00
committed by android-build-merger

View File

@@ -94,14 +94,17 @@ public class SummaryLoader {
}); });
} }
/**
* Only call from the main thread.
*/
public void setListening(boolean listening) { public void setListening(boolean listening) {
synchronized (mReceivers) { if (mListening == listening) return;
// Unregister listeners immediately. mListening = listening;
for (int i = 0; i < mReceivers.size(); i++) { // Unregister listeners immediately.
mActivity.unregisterReceiver(mReceivers.get(i)); for (int i = 0; i < mReceivers.size(); i++) {
} mActivity.unregisterReceiver(mReceivers.get(i));
mReceivers.clear();
} }
mReceivers.clear();
mWorker.obtainMessage(Worker.MSG_SET_LISTENING, listening ? 1 : 0, 0).sendToTarget(); mWorker.obtainMessage(Worker.MSG_SET_LISTENING, listening ? 1 : 0, 0).sendToTarget();
} }
@@ -147,20 +150,21 @@ public class SummaryLoader {
* This ensures that the receivers are unregistered immediately, since most summary loader * This ensures that the receivers are unregistered immediately, since most summary loader
* operations are asynchronous. * operations are asynchronous.
*/ */
public void registerReceiver(BroadcastReceiver receiver, IntentFilter filter) { public void registerReceiver(final BroadcastReceiver receiver, final IntentFilter filter) {
synchronized (mReceivers) { mActivity.runOnUiThread(new Runnable() {
if (!mListening) { @Override
return; public void run() {
if (!mListening) {
return;
}
mReceivers.add(receiver);
mActivity.registerReceiver(receiver, filter);
} }
mReceivers.add(receiver); });
mActivity.registerReceiver(receiver, filter);
}
} }
private synchronized void setListeningW(boolean listening) { private synchronized void setListeningW(boolean listening) {
if (mListening == listening) return;
if (DEBUG) Log.d(TAG, "Listening " + listening); if (DEBUG) Log.d(TAG, "Listening " + listening);
mListening = listening;
for (SummaryProvider p : mSummaryMap.keySet()) { for (SummaryProvider p : mSummaryMap.keySet()) {
try { try {
p.setListening(listening); p.setListening(listening);
@@ -175,10 +179,6 @@ public class SummaryLoader {
if (provider != null) { if (provider != null) {
if (DEBUG) Log.d(TAG, "Creating " + tile); if (DEBUG) Log.d(TAG, "Creating " + tile);
mSummaryMap.put(provider, tile.intent.getComponent()); mSummaryMap.put(provider, tile.intent.getComponent());
if (mListening) {
// If we are somehow already listening, put the provider in that state.
provider.setListening(true);
}
} }
} }