diff --git a/com/android/internal/location/GpsLocationProvider.smali b/com/android/internal/location/GpsLocationProvider.smali
--- a/com/android/internal/location/GpsLocationProvider.smali
+++ b/com/android/internal/location/GpsLocationProvider.smali
@@ -447,10 +447,10 @@
     iput-wide v5, p0, Lcom/android/internal/location/GpsLocationProvider;->mStatusUpdateTime:J
 
     .line 256
-    iput-boolean v9, p0, Lcom/android/internal/location/GpsLocationProvider;->mInjectNtpTimePending:Z
+    iput-boolean v8, p0, Lcom/android/internal/location/GpsLocationProvider;->mInjectNtpTimePending:Z
 
     .line 257
-    iput-boolean v9, p0, Lcom/android/internal/location/GpsLocationProvider;->mDownloadXtraDataPending:Z
+    iput-boolean v8, p0, Lcom/android/internal/location/GpsLocationProvider;->mDownloadXtraDataPending:Z
 
     .line 260
     iput-boolean v8, p0, Lcom/android/internal/location/GpsLocationProvider;->mNavigating:Z
@@ -3013,7 +3013,7 @@
 .end method
 
 .method private handleDisable()V
-    .registers 4
+    .registers 6
 
     .prologue
     const-string v2, "GpsLocationProvider"
@@ -3047,6 +3047,20 @@
     .line 904
     invoke-direct {p0}, Lcom/android/internal/location/GpsLocationProvider;->native_disable()V
 
+    iget-object v3, p0, Lcom/android/internal/location/GpsLocationProvider;->mHandler:Landroid/os/Handler;
+
+    const/4 v4, 0x5
+
+    invoke-virtual {v3, v4}, Landroid/os/Handler;->removeMessages(I)V
+
+    iput-boolean v1, p0, Lcom/android/internal/location/GpsLocationProvider;->mInjectNtpTimePending:Z
+
+    const/4 v4, 0x6
+
+    invoke-virtual {v3, v4}, Landroid/os/Handler;->removeMessages(I)V
+
+    iput-boolean v1, p0, Lcom/android/internal/location/GpsLocationProvider;->mDownloadXtraDataPending:Z
+
     .line 907
     iget-object v1, p0, Lcom/android/internal/location/GpsLocationProvider;->mEventThread:Ljava/lang/Thread;
 
@@ -3291,6 +3305,27 @@
 
     .line 874
     :cond_4e
+    iget-object v0, p0, Lcom/android/internal/location/GpsLocationProvider;->mHandler:Landroid/os/Handler;
+
+    const/4 v1, 0x5
+
+    invoke-virtual {v0, v1}, Landroid/os/Handler;->removeMessages(I)V
+
+    invoke-static {v0, v1}, Landroid/os/Message;->obtain(Landroid/os/Handler;I)Landroid/os/Message;
+
+    move-result-object v1
+
+    invoke-virtual {v0, v1}, Landroid/os/Handler;->sendMessage(Landroid/os/Message;)Z
+
+    invoke-direct {p0}, Lcom/android/internal/location/GpsLocationProvider;->native_supports_xtra()Z
+
+    move-result v0
+
+    if-eqz v0, :cond0
+
+    invoke-direct {p0}, Lcom/android/internal/location/GpsLocationProvider;->xtraDownloadRequest()V
+
+    :cond0
     new-instance v0, Lcom/android/internal/location/GpsLocationProvider$GpsEventThread;
 
     invoke-direct {v0, p0}, Lcom/android/internal/location/GpsLocationProvider$GpsEventThread;-><init>(Lcom/android/internal/location/GpsLocationProvider;)V
@@ -3988,7 +4023,9 @@
 
     move-result-object v2
 
-    invoke-virtual {v1, v2}, Landroid/os/Handler;->sendMessage(Landroid/os/Message;)Z
+    const-wide/16 v3, 0x1388
+
+    invoke-virtual {v1, v2, v3, v4}, Landroid/os/Handler;->sendMessageDelayed(Landroid/os/Message;J)Z
 
     .line 667
     :cond_9b
@@ -4014,7 +4051,9 @@
 
     move-result-object v2
 
-    invoke-virtual {v1, v2}, Landroid/os/Handler;->sendMessage(Landroid/os/Message;)Z
+    const-wide/16 v3, 0x1388
+
+    invoke-virtual {v1, v2, v3, v4}, Landroid/os/Handler;->sendMessageDelayed(Landroid/os/Message;J)Z
 
     .line 674
     :cond_b1
