mirror of
https://github.com/Silent1566/webhtv.git
synced 2026-10-18 07:09:16 +00:00
feat(mobile): 首页加载失败不再是一片空白,给出错误态与可用的重试
手机端首页的状态由 StateEvent(EventBus)广播、VodFragment 消费。改动前只有 EMPTY/PROGRESS/CONTENT,而消费方对 EMPTY 的处理**只是隐藏转圈**: case EMPTY: hideProgress(); break; // 什么都不显示 而 HomeActivity 的配置加载失败路径正是发 EMPTY 再弹一个会消失的吐司。两者一叠加, 内容源加载失败后首页就是**一片空白**——用户既不知道原因,也没有重试入口。 这是电视端 TV-5 修过的同一类缺陷,但发生在手机端最大的面(首页)上。 根因有两条:StateEvent 把「失败」和「没有内容」混成了一个 EMPTY;消费方根本没渲染 任何状态视图。 - StateEvent 增加 message 字段与 Type.ERROR / error(message) 工厂,其余三态仍不带原因; - HomeActivity 的配置加载失败改发 StateEvent.error(msg);崩溃重启那次保持 EMPTY (它是「本次跳过加载」,不是失败); - fragment_vod.xml 在既有 @id/progress 旁新增一个**空的** ProgressLayout(@id/state): 复用它的四态与 setEmptyContent/showError,不重复实现;放在同级而不是包一层, 是因为根是 CoordinatorLayout + AppBarLayout,包裹会破坏 toolbar 的滚动行为; - VodFragment:ERROR -> 错误色标题 + 原因 + 重试;EMPTY -> 三件套空态; PROGRESS/CONTENT -> 收起状态浮层; - 三语字符串 home_empty_*。 **真机验证抓出一个缺陷并已修**:最初把错误态的重试接成 homeContent(),点了毫无反应—— 首页的错误来自 HomeActivity.initConfig() 的配置加载,而 homeContent() 重载的是首页内容, 配置根本没被重新拉取。我用 dumpsys 取按钮精确 bounds 确认点击命中(排除「点偏」), 然后新增 VodFragment.ConfigRetry 回调接口、由 HomeActivity 实现并接到 initConfig(), 重试期间先切回加载态。空态的主动作仍保持 homeContent()——「确实没有内容」时重载内容才对。 验证:testMobile 定向测试 BUILD SUCCESSFUL(新增 7 项);mobile assemble BUILD SUCCESSFUL; 真机 192.168.50.3:5561(竖屏 1080x1920,真实手机形态)在启动前用 iptables 只拦应用 uid 制造真实失败:首页显示错误色标题「内容源加载失败」+ 原因「配置取得失败 / Failed to connect to /192.168.50.50:4567」+「重试」;移除拦截后点重试,首页完整恢复(分类与海报网格全部回来)。 规则已确认移除,设备已恢复电视端 flavor。 未观测:空态(EMPTY,对应崩溃重启跳过加载或内容源确实为空,都不易构造); StateEvent 的 CONTENT 分支(没有找到广播它的调用点)。详见文档 §6.5。 环境限制:本会话无可用 bash,check_ui_tokens.sh 与 task_guard.sh 无法执行, 按同等意图手工暂存/提交/打 tag。
This commit is contained in:
parent
bf81ad59ca
commit
f2f65ff3cf
9 changed files with 449 additions and 7 deletions
Loading…
Add table
Add a link
Reference in a new issue