OSDN Git Service

Start sensor service in a seperate thread
authorWei Wang <wvw@google.com>
Tue, 29 Nov 2016 19:53:53 +0000 (11:53 -0800)
committerWei Wang <wvw@google.com>
Thu, 1 Dec 2016 00:38:52 +0000 (16:38 -0800)
StartSensorService is taking ~141.8ms on marlin to start
With this CL, StartSensor will be done in a seperate
thread so the SystemServer can continue booting

Bug: 33199244
Test: on marlin
Change-Id: I9e486d61e85072d5cbe69b1671c8fbfeca9c2200

services/core/jni/com_android_server_SystemServer.cpp

index c7d6b95..e46490b 100644 (file)
 #include <cutils/properties.h>
 #include <utils/Log.h>
 #include <utils/misc.h>
+#include <utils/AndroidThreads.h>
 
 namespace android {
 
+static int start_sensor_service(void* /*unused*/) {
+    SensorService::instantiate();
+    return 0;
+}
+
 static void android_server_SystemServer_startSensorService(JNIEnv* /* env */, jobject /* clazz */) {
     char propBuf[PROPERTY_VALUE_MAX];
     property_get("system_init.startsensorservice", propBuf, "1");
     if (strcmp(propBuf, "1") == 0) {
-        // Start the sensor service
-        SensorService::instantiate();
+        // Start the sensor service in a new thread
+        createThreadEtc(start_sensor_service, nullptr,
+                        "StartSensorThread", PRIORITY_FOREGROUND);
     }
 }