fix: 首页用缓存数据填充卡片数字,消除刷新闪烁
之前流程:inflate(数字=0) → API请求 → 数字跳到真实值,产生闪烁 现在流程:inflate → 立即用 lastStats 缓存填充 → API静默更新 首次启动无缓存时仍显示 XML 默认值 0,之后都是无感刷新 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -123,10 +123,15 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() {
|
||||
// 主动获取当前电量
|
||||
initBatteryStatus()
|
||||
|
||||
// 先加载统计数据(设好 lastStats 基准),再监听事件
|
||||
// EventBus buffer=64 会暂存期间的通知,不丢失
|
||||
// 先用缓存数据填充(避免 "0" → 真实值的闪烁)
|
||||
notificationManager.lastStats?.let { cached ->
|
||||
updateCardNum(tvPoolNum, cached.waitForTask)
|
||||
updateCardNum(tvPunchNum, cached.treatTask)
|
||||
updateCardNum(tvCompleteNum, cached.incompleteTask)
|
||||
}
|
||||
|
||||
// 再异步请求最新数据,静默更新
|
||||
viewLifecycleOwner.lifecycleScope.launch {
|
||||
// 同步等待统计数据返回
|
||||
val result = safeApiCall { taskApi.getStatistics() }
|
||||
if (result is ApiResult.Success && result.data != null) {
|
||||
val data = result.data
|
||||
@@ -134,7 +139,6 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() {
|
||||
updateCardNum(tvPunchNum, data.treatTask)
|
||||
updateCardNum(tvCompleteNum, data.incompleteTask)
|
||||
notificationManager.lastStats = data
|
||||
Timber.d("首页: lastStats 基准已设置 ${data}")
|
||||
}
|
||||
|
||||
// 基准设好后再开始监听事件
|
||||
|
||||
Reference in New Issue
Block a user