2015-11-05 6 views
0

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

Проблема заключается в том, что я возвращаюсь в меню Wear и снова открываю приложение. В этот момент приложение зарегистрирует слушателей снова и продублирует все меры. Я попытался отменить регистрацию слушателей на функции 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*/ 
    ... 
} 

Спасибо заранее.

ответ

0

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