动态页「看完视频返回、焦点乱跳或丢焦」修好了 —— 顺带解决「每次回到动态页,已经翻过的页全没了」。
变更
- 返回播放器时不该重载列表(P11-253)。真机日志(
logs_live_20261012_213427.log)里这条链是连着的:
21:22:57 从播放器返回动态页(此刻列表 75 条)→ 21:22:57.9 起拉了一次「动态首屏」
(B 站 20 条 + YouTube 关注流,getSubscriptionsPage first done21:23:00.593)→ 21:23:00.6 首屏
合并落地,列表被换成 21 条 → 用户此刻在第 46 位(刚按了 ↓),那一行连同卡片被列表销毁 ⇒
焦点掉出网格掉到侧栏,兜底机制随后只能把它夹到最后一张卡(merge refocus: 46 → 20),
末卡又立刻触发一次「加载更多」多拉一页(21:23:01)。
真因:动态页的首屏加载把**「页面被重建」也当成了「切 tab」——电视端为给播放器让路,
播放期间整个内容层会被卸载**(返回时重建),于是「返回」必然触发一次强制刷新(仅在开着
「切换时自动确认 + 切换时自动刷新」时;该机开着)。修法:页面重建(冷组合)不再刷新,
一律沿用已有列表;刷新只由明确动作触发 —— 侧栏重点击「动态」、切子 tab(以及频道首次就绪
时补拉 YouTube,原样保留)。 - 同源的另一半:以前每次进动态页都会重拉首屏(实测 20:26 / 21:18 / 21:23 各一次),
已经翻过的页全部丢弃、得重新往下滚;本次一并修掉(进页面沿用原列表)。 - 判读过程另有两条被排除的可能:①「末行按 ↓ 逃逸到侧栏」——10-09~10-12 全部日志里
每一处动态网格失焦都能归到主动导航或本次重载,没有一次是 ↓ 逃逸;②「焦点掉到头像后被
自动确认送进我的页」——日志里所有openMyPage=true都是用户主动按确认。
待验证(真机)
- 从动态页点卡看视频 → 返回:日志
video exit与restore success之间不应再出现
BiliDynamicFeed … items=20/getSubscriptionsPage first done;焦点应回到原来那张卡,
列表长度(videos=)不缩水。 - 切子 tab、侧栏重点击「动态」仍正常刷新;频道增删 / 登录态变化后仍按设置刷新。
- 复现前提:这个 bug 只在 release 包(
com.kirin.mt)+「切换时自动确认」「切换时自动刷新」
都开启时出现。固定 URL 的 debug 包是默认设置(avatar focused: autoConfirm=false),
改前改后都不会复现,别拿它判。
已知
- 本轮只治「不该发生的重载」这一条。若将来出现别的路径在用户翻页途中替换整表(例如关注流增量
合并重排),深处的焦点仍可能被夹到就近的卡片;那条兜底判据(滚动中是否让位)本轮按用户要求未动。