Android Wear дублирует датчик EventListener

Я разрабатываю приложение Android Wear, которое регистрирует частоту сердечных сокращений с самого начала до того момента, когда пользователь перестанет нажимать кнопку, поэтому я не отменяю регистрацию слушателя в функции onStop или onDestroy.

Проблема в том, что когда я возвращаюсь в меню износа и снова открываю приложение. В этот момент приложение снова регистрирует слушателей и дублирует все меры. Я попытался отменить регистрацию слушателей в функциях onStart и onRestart, но это не сработало.

Вот мой код:

    ...

public class MainActivity extends Activity implements SensorEventListener {
    Sensor mHeartRateSensor;
    SensorManager mSensorManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //Sensor and sensor manager
        mSensorManager = ((SensorManager)getSystemService(SENSOR_SERVICE));
        mHeartRateSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_HEART_RATE);
    }

    @Override
    protected void onStart() {
        super.onStart();  
        mSensorManager.registerListener(this, mHeartRateSensor, SensorManager.SENSOR_DELAY_NORMAL);
    }

    @Override
    protected void onRestart() {
        super.onRestart();
        mSensorManager.registerListener(this, mHeartRateSensor, SensorManager.SENSOR_DELAY_NORMAL);
    }
    /*
    I need the listeners are active, so i can't unregister it
    @Override
    protected void onDestroy() {
        this.mSensorManager.unregisterListeners(this);
        super.onDestroy();
    }*/

    @Override
    public void onSensorChanged(SensorEvent sensorEvent) {
        //Get heart rate and accuracy
    }

    @Override
    public void onAccuracyChanged(Sensor sensor, int i) {
        //
    }

    /*on click listeners*/
    ...
}

Заранее спасибо.


person JaCu    schedule 05.11.2015    source источник


Ответы (1)


Вы можете добавить логическую переменную с именем mIsRegistered, установить ее значение по умолчанию на false. И когда вы хотите зарегистрироваться, сначала проверьте значение, если false, зарегистрируйтесь, если true, не регистрируйтесь снова.

person starkshang    schedule 05.11.2015