t/下的设备文件需要101ms左右,而SensorService有60~70次的关闭文件,大概有7s左右的时间。 РРР Р Р 调用流程是: Р frameworks/base/cmds/system_server/library/system_init.cpp: system_init->SensorServi ce::instantiate Р frameworks/native/services/sensorservice/SensorService.cpp: void SensorService::onFi rstRef()->SensorDevice& dev(SensorDevice::getInstance()) Р hardware/libsensors/SensorDevice.cpp: SensorDevice::SensorDevice()->sensors_open hardware/libsensors/sensors.cpp: open_sensors->sensors_poll_context_t Р sensors_poll_context_t执行打开每个传感器设备时,遍历/dev/input/目录下的设备文件,以匹配当前需要打开的设备,遍历文件是在 Р hardware/libsensors/SensorBase.cpp的openInput下实现,如果打开的设备文件不是正在打开的设备文件,会执行下面语句的else部分: Р if (!strcmp(name, inputName)) { Р strcpy(input_name, filename); Р break;