应用规则 vs 事件条件:谁优先?
为什么会有优先级冲突
Rotation 有三套东西能同时影响屏幕方向:
- 全局方向模式(主界面直接选的那个)
- 应用规则(给每个 App 单独设的)
- 事件条件(通话、充电、插耳机等触发的)
三者同时生效时,必须有一套优先级规则来决定"听谁的"。
默认优先级
从高到低:
应用规则 > 事件条件 > 全局方向模式
也就是说:
- 你给微信设了"强制竖屏"(应用规则),同时正在充电(事件条件设了"充电时强制横屏")——微信里永远竖屏,应用规则压过事件条件
- 没有应用规则覆盖当前 App,充电时自动切横屏——事件条件压过全局的"自动旋转开"
可以改吗
部分版本的 Rotation 允许在事件条件 → 事件优先级里调整不同事件之间的顺序。但"应用规则 > 事件条件"这个大方向框架是固定的——应用规则就是要最高优先,因为它是"你明确为这个 App 指定的行为"。
一个具体例子
你给高德地图设了"锁定当前"(应用规则),同时正在打电话(事件条件设了"通话时强制竖屏")。
进入高德导航后打电话——地图继续保持你之前锁的方向,不会被通话事件切走。因为应用规则优先级最高。
如果想让事件条件压过应用规则
Rotation 没有直接提供"事件条件 > 应用规则"的切换。但你可以:
- 给那个 App 不设任何应用规则,让事件条件直接生效
- 或者给那个事件也设一条应用规则(对,同一个 App 可以在事件条件里单独配置)
小结
| 冲突场景 | 默认结果 |
|---|---|
| 应用规则 vs 事件条件 | 应用规则胜出 |
| 事件条件 vs 全局模式 | 事件条件胜出 |
| 多事件同时触发 | 按事件优先级设定决定 |