我正在为我的 Android 应用程序使用传感器。我用一行代码注册传感器:
mySensorManager.registerListener(this, orientationSensor, SensorManager.SENSOR_DELAY_NORMAL);
我引入了一行代码来取消注册侦听器,这样它就不会一直运行:
mySensorManager.unregisterListener(this);
到目前为止它有效,但我需要在应用程序恢复时再次注册它。我需要知道我的传感器管理器是否有已注册的侦听器,以便我可以再次注册或跳过它。可以做这样的事情吗?:
if (mySensorManager.getRegisteredListenerList == null){ registerListener() } else { .. }
据我所知,没有本地方法可以检查您是否已经注册了侦听器。我不会太担心这个检查,因为这个检查已经由 Android 完成,所以如果你已经注册了监听器,Android 不会添加相同的监听器两次:
@SuppressWarnings("deprecation")
private boolean registerLegacyListener(int legacyType, int type,
SensorListener listener, int sensors, int rate)
{
if (listener == null) {
return false;
}
boolean result = false;
// Are we activating this legacy sensor?
if ((sensors & legacyType) != 0) {
// if so, find a suitable Sensor
Sensor sensor = getDefaultSensor(type);
if (sensor != null) {
// If we don't already have one, create a LegacyListener
// to wrap this listener and process the events as
// they are expected by legacy apps.
LegacyListener legacyListener = null;
synchronized (mLegacyListenersMap) {
legacyListener = mLegacyListenersMap.get(listener);
if (legacyListener == null) {
// we didn't find a LegacyListener for this client,
// create one, and put it in our list.
legacyListener = new LegacyListener(listener);
mLegacyListenersMap.put(listener, legacyListener);
}
}
// register this legacy sensor with this legacy listener
legacyListener.registerSensor(legacyType);
// and finally, register the legacy listener with the new apis
result = registerListener(legacyListener, sensor, rate);
}
}
return result;
}
所以你可以根据需要多次调用registerListener,它只会添加一次:)
这同样适用于取消注册逻辑
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)