am 112c980a: am 3a3fd2ba: Merge change Iaf1f0918 into eclair-mr2

Merge commit '112c980a3d3fd8873dbc44006436aff80535808e'

* commit '112c980a3d3fd8873dbc44006436aff80535808e':
  Implement API to have new broadcasts replace existing broadcasts.
This commit is contained in:
Dianne Hackborn
2009-12-14 16:15:03 -08:00
committed by Android Git Automerger

View File

@@ -98,7 +98,7 @@ public class ConnectivityService extends IConnectivityManager.Stub {
private List mFeatureUsers; private List mFeatureUsers;
private boolean mSystemReady; private boolean mSystemReady;
private ArrayList<Intent> mDeferredBroadcasts; private Intent mInitialBroadcast;
private static class NetworkAttributes { private static class NetworkAttributes {
/** /**
@@ -794,6 +794,7 @@ public class ConnectivityService extends IConnectivityManager.Stub {
} }
Intent intent = new Intent(ConnectivityManager.CONNECTIVITY_ACTION); Intent intent = new Intent(ConnectivityManager.CONNECTIVITY_ACTION);
intent.addFlags(Intent.FLAG_RECEIVER_REPLACE_PENDING);
intent.putExtra(ConnectivityManager.EXTRA_NETWORK_INFO, info); intent.putExtra(ConnectivityManager.EXTRA_NETWORK_INFO, info);
if (info.isFailover()) { if (info.isFailover()) {
intent.putExtra(ConnectivityManager.EXTRA_IS_FAILOVER, true); intent.putExtra(ConnectivityManager.EXTRA_IS_FAILOVER, true);
@@ -890,6 +891,7 @@ public class ConnectivityService extends IConnectivityManager.Stub {
private void sendConnectedBroadcast(NetworkInfo info) { private void sendConnectedBroadcast(NetworkInfo info) {
Intent intent = new Intent(ConnectivityManager.CONNECTIVITY_ACTION); Intent intent = new Intent(ConnectivityManager.CONNECTIVITY_ACTION);
intent.addFlags(Intent.FLAG_RECEIVER_REPLACE_PENDING);
intent.putExtra(ConnectivityManager.EXTRA_NETWORK_INFO, info); intent.putExtra(ConnectivityManager.EXTRA_NETWORK_INFO, info);
if (info.isFailover()) { if (info.isFailover()) {
intent.putExtra(ConnectivityManager.EXTRA_IS_FAILOVER, true); intent.putExtra(ConnectivityManager.EXTRA_IS_FAILOVER, true);
@@ -927,6 +929,7 @@ public class ConnectivityService extends IConnectivityManager.Stub {
} }
Intent intent = new Intent(ConnectivityManager.CONNECTIVITY_ACTION); Intent intent = new Intent(ConnectivityManager.CONNECTIVITY_ACTION);
intent.addFlags(Intent.FLAG_RECEIVER_REPLACE_PENDING);
intent.putExtra(ConnectivityManager.EXTRA_NETWORK_INFO, info); intent.putExtra(ConnectivityManager.EXTRA_NETWORK_INFO, info);
if (getActiveNetworkInfo() == null) { if (getActiveNetworkInfo() == null) {
intent.putExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, true); intent.putExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, true);
@@ -946,26 +949,20 @@ public class ConnectivityService extends IConnectivityManager.Stub {
private void sendStickyBroadcast(Intent intent) { private void sendStickyBroadcast(Intent intent) {
synchronized(this) { synchronized(this) {
if (mSystemReady) { if (!mSystemReady) {
mContext.sendStickyBroadcast(intent); mInitialBroadcast = new Intent(intent);
} else {
if (mDeferredBroadcasts == null) {
mDeferredBroadcasts = new ArrayList<Intent>();
}
mDeferredBroadcasts.add(intent);
} }
intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT);
mContext.sendStickyBroadcast(intent);
} }
} }
void systemReady() { void systemReady() {
synchronized(this) { synchronized(this) {
mSystemReady = true; mSystemReady = true;
if (mDeferredBroadcasts != null) { if (mInitialBroadcast != null) {
int count = mDeferredBroadcasts.size(); mContext.sendStickyBroadcast(mInitialBroadcast);
for (int i = 0; i < count; i++) { mInitialBroadcast = null;
mContext.sendStickyBroadcast(mDeferredBroadcasts.get(i));
}
mDeferredBroadcasts = null;
} }
} }
} }