我正在开发一款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*/
...
}
提前谢谢。
您可以添加一个名为mIsRegistered
的布尔变量,将其默认值设置为false。当您想要注册时,首先检查该值,如果为false,则进行注册,如果为true,则不再注册。