我有一個應用程序在Android中將傳感器值轉儲到手機的SDcard內存,並在我按下屏幕上的按鈕時自行關閉。我正在使用Sensor_delay_fastest來獲取傳感器的最大更新。Android傳感器轉儲響應
我的問題是,因爲我在UI線程上執行所有計算,所以按鈕需要很長時間才能響應,這對我的應用程序非常不利,因爲它在按下「Kill」按鈕後記錄了所有額外值。我知道我應該把我的計算放在另一個線程中,但我不確定我會如何處理事件處理操作。例如,我有
protected void onResume()
{
super.onResume();
sm.registerListener(this, sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_FASTEST);
sm.registerListener(this, sm.getDefaultSensor(Sensor.TYPE_ORIENTATION), SensorManager.SENSOR_DELAY_FASTEST);
}
和的onStop()和onSensorChanged功能()和onAccuracyChanged(),這在本事件觸發時執行。實際上,主要的「重」計算在我的onSensorChanged()中,我在SDcard上寫入這些值,這可能會導致延遲。但是我不能把它放在一個不同的線程中,因爲隨着事件不斷髮射,它會創建大量的線程。
那麼,如何讓這個系統更具響應性呢?我對Android非常陌生,並且通過一些示例代碼的幫助將不勝感激。
謝謝大家!
編輯:我可以讓線程實現一個接口,如SensorEventListener,然後在該線程內實現OnResume和OnStop?