diff options
author | Ye Wen <ywen@google.com> | 2015-05-15 03:27:14 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-05-15 03:27:14 +0000 |
commit | e1084c6a5a90a458d826802481198a07c36ad553 (patch) | |
tree | 474bb1a65818a2d1329409dd64e6ff7567abe2f9 | |
parent | 97e68dd388beca865c5363fda0cc4f1f9971aa78 (diff) | |
parent | 428fa0b017e40c2cd210a4c974e57c5e85584441 (diff) | |
download | android_packages_services_Mms-e1084c6a5a90a458d826802481198a07c36ad553.tar.gz android_packages_services_Mms-e1084c6a5a90a458d826802481198a07c36ad553.tar.bz2 android_packages_services_Mms-e1084c6a5a90a458d826802481198a07c36ad553.zip |
Merge "Don't initiate duplicate mms network request" into mnc-dev
-rw-r--r-- | src/com/android/mms/service/MmsNetworkManager.java | 77 |
1 files changed, 42 insertions, 35 deletions
diff --git a/src/com/android/mms/service/MmsNetworkManager.java b/src/com/android/mms/service/MmsNetworkManager.java index c8aa904..758d665 100644 --- a/src/com/android/mms/service/MmsNetworkManager.java +++ b/src/com/android/mms/service/MmsNetworkManager.java @@ -60,6 +60,41 @@ public class MmsNetworkManager { // The SIM ID which we use to connect private final int mSubId; + /** + * Network callback for our network request + */ + private class NetworkRequestCallback extends ConnectivityManager.NetworkCallback { + @Override + public void onAvailable(Network network) { + super.onAvailable(network); + Log.d(MmsService.TAG, "NetworkCallbackListener.onAvailable: network=" + network); + synchronized (MmsNetworkManager.this) { + mNetwork = network; + MmsNetworkManager.this.notifyAll(); + } + } + + @Override + public void onLost(Network network) { + super.onLost(network); + Log.d(MmsService.TAG, "NetworkCallbackListener.onLost: network=" + network); + synchronized (MmsNetworkManager.this) { + releaseRequestLocked(this); + MmsNetworkManager.this.notifyAll(); + } + } + + @Override + public void onUnavailable() { + super.onUnavailable(); + Log.d(MmsService.TAG, "NetworkCallbackListener.onUnavailable"); + synchronized (MmsNetworkManager.this) { + releaseRequestLocked(this); + MmsNetworkManager.this.notifyAll(); + } + } + } + public MmsNetworkManager(Context context, int subId) { mContext = context; mNetworkCallback = null; @@ -88,9 +123,11 @@ public class MmsNetworkManager { Log.d(MmsService.TAG, "MmsNetworkManager: already available"); return; } - Log.d(MmsService.TAG, "MmsNetworkManager: start new network request"); - // Not available, so start a new request - newRequest(); + // Not available, so start a new request if not done yet + if (mNetworkCallback == null) { + Log.d(MmsService.TAG, "MmsNetworkManager: start new network request"); + startNewNetworkRequestLocked(); + } final long shouldEnd = SystemClock.elapsedRealtime() + NETWORK_ACQUIRE_TIMEOUT_MILLIS; long waitTime = NETWORK_ACQUIRE_TIMEOUT_MILLIS; while (waitTime > 0) { @@ -131,39 +168,9 @@ public class MmsNetworkManager { /** * Start a new {@link android.net.NetworkRequest} for MMS */ - private void newRequest() { + private void startNewNetworkRequestLocked() { final ConnectivityManager connectivityManager = getConnectivityManager(); - mNetworkCallback = new ConnectivityManager.NetworkCallback() { - @Override - public void onAvailable(Network network) { - super.onAvailable(network); - Log.d(MmsService.TAG, "NetworkCallbackListener.onAvailable: network=" + network); - synchronized (MmsNetworkManager.this) { - mNetwork = network; - MmsNetworkManager.this.notifyAll(); - } - } - - @Override - public void onLost(Network network) { - super.onLost(network); - Log.d(MmsService.TAG, "NetworkCallbackListener.onLost: network=" + network); - synchronized (MmsNetworkManager.this) { - releaseRequestLocked(this); - MmsNetworkManager.this.notifyAll(); - } - } - - @Override - public void onUnavailable() { - super.onUnavailable(); - Log.d(MmsService.TAG, "NetworkCallbackListener.onUnavailable"); - synchronized (MmsNetworkManager.this) { - releaseRequestLocked(this); - MmsNetworkManager.this.notifyAll(); - } - } - }; + mNetworkCallback = new NetworkRequestCallback(); connectivityManager.requestNetwork( mNetworkRequest, mNetworkCallback, NETWORK_REQUEST_TIMEOUT_MILLIS); } |