所以我試圖分析傳感器的一些數據。我想讓數組列表「填滿」數據,然後在500ms後,線程消失並處理它。看起來這個線程只執行一次(我知道這是應該發生的事情),但我無法想出一個方法來執行它多次,它睡了500毫秒。我嘗試使用while(true)
,lock
,handler
,timer
並沒有得到任何好處。執行線程onSensorChanged
public void onSensorChanged(SensorEvent sensorEvent) {
if (sensorEvent.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
accSensorVals = lowPass(sensorEvent.values.clone(), accSensorVals);
}
xAxisValues.add(accSensorVals[0]); // [0] - X axis
yAxisValues.add(accSensorVals[1]); // [1] - Y axis
zAxisValues.add(accSensorVals[2]); // [2] - Z axis
new Thread() {
public void run() {
try {
Thread.sleep(DELAY); // delay for 500 ms
checkSpikes(xAxisValues, yAxisValues, zAxisValues);
xAxisValues = new ArrayList<>();
yAxisValues = new ArrayList<>();
zAxisValues = new ArrayList<>();
} catch (Exception e) {}
}
}.start();
}
我使用這段代碼在後臺服務已經,並使用while循環消耗CPU週期的很多,所以我不認爲會是最佳解決方案。但是,您的解決方案似乎仍然無法正常工作。不過謝謝你。 –
然後檢查此無限循環,https://developer.android.com/reference/android/app/AlarmManager.html –