我在SensorManager.unregisterListener中遇到了一些問題。它們與Android, Thread, Cannot unregister SensorEventListener和SensorEventListener doesn't get unregistered with unregisterListener() method相似。但我找不到我的答案!我也遵循SensorManager文檔示例http://developer.android.com/reference/android/hardware/SensorManager.html#SENSOR_DELAY_UI。Android傳感器偵聽器未得到未註冊或傳感器仍檢索值
問題是活動完成後,我取消註冊偵聽器,但傳感器不斷髮送值直到應用程序被完全銷燬。
這是我的代碼:
我SensorController實現SensorEventListener
public class SensorController implements SensorEventListener{
構造:
public SensorController(Context context){
sensorManager = (SensorManager)context.getSystemService(Context.SENSOR_SERVICE);
}
當活動的的onResume回調被稱爲
我SensorController的onResume方法被稱爲:
public void onResume(){
mAccelerometerSensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
boolean ret1 = sensorManager.registerListener(this, mAccelerometerSensor, SensorManager.SENSOR_DELAY_UI);
mMagneticSensor = sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
boolean ret2 = sensorManager.registerListener(this, mMagneticSensor, SensorManager.SENSOR_DELAY_UI);
}
我SensorController的onPause方法被調用時,活動的回調的onPause被稱爲:
public void onPause(){
sensorManager.unregisterListener(this);
}
並在SensorChanged我把日誌監視傳感器事件:
@Override
public void onSensorChanged(SensorEvent event) {
this.computeRotationAngles(event);
Log.i("SensorController", "onSensorChanged");
}
所以......活動結束後onPause方法,onSensorChanged(SensorEvent事件)仍然檢索傳感器事件。爲什麼??我在SensorController.onPause()函數中取消註冊它。傳感器檢索出很好的值,但我無法阻止它們發送。我究竟做錯了什麼?
非常感謝您提前!我將不勝感激每一個小技巧:)
具有u受審sensorManager.registerListener(NULL) – Rohit
http://stackoverflow.com/questions/11071035/unregistering-sensormanager-doesnt-work – Rohit
是。我已經嘗試了SensorManager = null和sensorManager.registerListener(null),並且我仍然從傳感器獲取值。 –