Fix Wifi+Cell on boot after wifi in use.

The gist of it is: Ignore reconnect fail of default APN during boot.

A long path:
1 If wifi is started at boot it starts fast - before the PhoneService is available.
2 Wifi starts by failing - you get DISCONNECTED/Scanning events so CM starts the other default network (mobile).
3 Trying to restart mobile fails because the phone service isn't up yet.
4 The failure is noted and the net is marked as not-enabled.
5 The phone trys to auto-start the mobile network and succeeds, sending state-changed events
6 The CM ignores the state-changed events because the net isn't enabled (see 4).

The long term fix is to remove two-way state tracking from the MobileDataStateTracker and instead just consume the state fed to us in state-change events.
Near term fix is to not mark the default net disabled when we have failure (step 4) if the phone service isn't available.
This commit is contained in:
Robert Greenwalt
2009-08-19 11:45:32 -07:00
parent 3c513ed95c
commit 60a45aff31

View File

@@ -316,6 +316,12 @@ public class MobileDataStateTracker extends NetworkStateTracker {
// no need to do anything - we're already due some status update intents
break;
case Phone.APN_REQUEST_FAILED:
if (mPhoneService == null && mApnType == Phone.APN_TYPE_DEFAULT) {
// on startup we may try to talk to the phone before it's ready
// just leave mEnabled as it is for the default apn.
return false;
}
// else fall through
case Phone.APN_TYPE_NOT_AVAILABLE:
mEnabled = false;
break;