我要按如下方式限制Xamarin.Essential
的方向传感器:
Observable.FromEventPattern<OrientationSensorChangedEventArgs>(
ev => OrientationSensor.ReadingChanged += ev,
ev => OrientationSensor.ReadingChanged -= ev
)
.Throttle(TimeSpan.FromMilliseconds(500))
.Subscribe(x => { onOrientationChanged(x.Sender, x.EventArgs); });
OrientationSensor.Start(SensorSpeed.UI);
处理程序方法具有以下签名:
void onOrientationChanged(object sender, OrientationSensorChangedEventArgs e)
{
}
如果我忽略了Throttle
方法,一切都会很好。将Throttle
放在那儿,什么都不会发生。
答案 0 :(得分:0)
据我了解,您想旋转屏幕,但不是立即旋转-仅在经过500毫秒之后。
在这种情况下,您应该在第4行上使用.Debounce(TimeSpan.FromMilliseconds(500))
而不是.Throttle
。
油门和去抖之间的区别是:
Debounce将在500ms的时间内处理所有传入事件,并且 只会发出最后一个。
节气门的工作原理有所不同:它需要在 500ms周期并发射它;所有其他事件将被忽略,直到 500ms周期过去。因此,您只得到一小笔零钱 作为第一个事件,还不足以完成轮换。