summaryrefslogtreecommitdiff
path: root/services/wifi
diff options
context:
space:
mode:
authorDavid Su <dysu@google.com>2019-09-18 13:35:47 -0700
committerDavid Su <dysu@google.com>2019-09-18 13:35:47 -0700
commita7430559e238bee5252f1fad78373da6b5c23af8 (patch)
treec8fbc0b0c1f64a56429c84b705c92c89ad6b0401 /services/wifi
parent4c4650cb1bf0bfbef562ba75f052f3dbd7761fc0 (diff)
Fix boot time regression
Spin up a new thread to perform Wifi initialization. Also reordered initialization so that WifiScanningService starts before WifiService, since WifiService needs to call WifiScanner. Bug: 141003116 Bug: 140938772 Test: atest google/perf/boottime/boottime-test -v Change-Id: Idcc910f853a2270924bf138b636a3c56158cf1af
Diffstat (limited to 'services/wifi')
-rw-r--r--services/wifi/java/android/net/wifi/WifiStackClient.java22
1 files changed, 15 insertions, 7 deletions
diff --git a/services/wifi/java/android/net/wifi/WifiStackClient.java b/services/wifi/java/android/net/wifi/WifiStackClient.java
index fa66e4c5eeea..64af7a8845a7 100644
--- a/services/wifi/java/android/net/wifi/WifiStackClient.java
+++ b/services/wifi/java/android/net/wifi/WifiStackClient.java
@@ -21,6 +21,7 @@ import static android.os.IServiceManager.DUMP_FLAG_PRIORITY_NORMAL;
import android.annotation.NonNull;
import android.content.Context;
import android.net.ConnectivityModuleConnector;
+import android.os.HandlerThread;
import android.os.IBinder;
import android.os.RemoteException;
import android.os.ServiceManager;
@@ -56,13 +57,20 @@ public class WifiStackClient {
public void onModuleServiceConnected(IBinder service) {
Log.i(TAG, "Wifi stack connected");
- registerWifiStackService(service);
- IWifiStackConnector connector = IWifiStackConnector.Stub.asInterface(service);
- registerApiServiceAndStart(connector, Context.WIFI_SERVICE);
- registerApiServiceAndStart(connector, Context.WIFI_SCANNING_SERVICE);
- registerApiServiceAndStart(connector, Context.WIFI_P2P_SERVICE);
- registerApiServiceAndStart(connector, Context.WIFI_AWARE_SERVICE);
- registerApiServiceAndStart(connector, Context.WIFI_RTT_RANGING_SERVICE);
+ // spin up a new thread to not block system_server main thread
+ HandlerThread thread = new HandlerThread("InitWifiServicesThread");
+ thread.start();
+ thread.getThreadHandler().post(() -> {
+ registerWifiStackService(service);
+ IWifiStackConnector connector = IWifiStackConnector.Stub.asInterface(service);
+ registerApiServiceAndStart(connector, Context.WIFI_SCANNING_SERVICE);
+ registerApiServiceAndStart(connector, Context.WIFI_SERVICE);
+ registerApiServiceAndStart(connector, Context.WIFI_P2P_SERVICE);
+ registerApiServiceAndStart(connector, Context.WIFI_AWARE_SERVICE);
+ registerApiServiceAndStart(connector, Context.WIFI_RTT_RANGING_SERVICE);
+
+ thread.quitSafely();
+ });
}
}