diff options
author | David Su <dysu@google.com> | 2019-09-18 13:35:47 -0700 |
---|---|---|
committer | David Su <dysu@google.com> | 2019-09-18 13:35:47 -0700 |
commit | a7430559e238bee5252f1fad78373da6b5c23af8 (patch) | |
tree | c8fbc0b0c1f64a56429c84b705c92c89ad6b0401 | |
parent | 4c4650cb1bf0bfbef562ba75f052f3dbd7761fc0 (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
-rw-r--r-- | services/wifi/java/android/net/wifi/WifiStackClient.java | 22 |
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(); + }); } } |