summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYe Wen <ywen@google.com>2015-05-15 03:27:14 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2015-05-15 03:27:14 +0000
commite1084c6a5a90a458d826802481198a07c36ad553 (patch)
tree474bb1a65818a2d1329409dd64e6ff7567abe2f9
parent97e68dd388beca865c5363fda0cc4f1f9971aa78 (diff)
parent428fa0b017e40c2cd210a4c974e57c5e85584441 (diff)
downloadandroid_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.java77
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);
}