我正在编写一个从 API 级别 19 开始针对 8 Oreo 的 Android 应用程序。我想查询Sensor.TYPE_STEP_COUNTER
. 由于据我了解无法直接读取当前值,因此我必须创建一个 SensorEventListener 等待onSensorChanged(SensorEvent event)
. 我该如何正确地做到这一点JobIntentService
?由于onHandleWork(@NonNull Intent intent)
是为了完成一项工作然后完成,我目前的解决方案是阻塞线程:
/// we need to wait for the sensor to return it's data in onSensorChanged
while (isWaitingForSensor) {
/// block the thread to not end the Job
try {
Thread.sleep(SLEEP_TIME_MS);
waitTime += SLEEP_TIME_MS;
if (waitTime >= MAX_WAIT_TIME) {
isWaitingForSensor = false;
}
} catch (InterruptedException e) {
}
}
并进一步在我的SensorEventListener
:
public void onSensorChanged(SensorEvent event) {
int stepCount = event.values[0];
...
isWaitingForSensor = false;
}
有人对此有更好和更节省的解决方案吗?