打餐前页面延迟刷新生命周期修复记录
问题与范围
DarkPickBeforeFragment.onResume() 安排的 300 毫秒刷新,在页面被替换后仍可能执行;setDishDetails() 调用 getString() 时 Fragment 已脱离 Activity,导致 IllegalStateException: Fragment not attached to a context。
- 本次只处理打餐前页面的进入页延迟刷新,不改动菜品详情缓存、
DISH_INFO_UPDATE 事件刷新及取餐流程。
修改
- 将 300 毫秒延迟提取为
DISH_DETAILS_REFRESH_DELAY_MS,由页面自己的主线程 Handler 管理刷新任务。
onResume() 重新安排任务;onPause() 取消尚未执行的任务;任务执行前确认 Fragment 处于 resumed 状态且视图存在。
- 菜品信息获取完成时的
DISH_INFO_UPDATE 事件仍按原逻辑立即刷新,页面再次进入时仍读取当前缓存。
验证
- 在 JDK 8 下执行
JAVA_HOME=$(/usr/libexec/java_home -v 1.8) ./gradlew :app:compileDebugJavaWithJavac --no-daemon,结果为 BUILD SUCCESSFUL。
- 源码仓库执行
git diff --check 通过。
- 未连接 410 真机,尚未进行快速进出页面和异步菜品更新的运行时回归。
Git 状态
- 源码修改位于当前
add_50g_show 分支;未暂存、提交、推送或切换分支。