diff --git a/app/src/main/java/com/xiaoqu/watch/ui/home/HomeFragment.kt b/app/src/main/java/com/xiaoqu/watch/ui/home/HomeFragment.kt index b9bf1a2..6fed5ca 100644 --- a/app/src/main/java/com/xiaoqu/watch/ui/home/HomeFragment.kt +++ b/app/src/main/java/com/xiaoqu/watch/ui/home/HomeFragment.kt @@ -123,14 +123,16 @@ class HomeFragment : BaseFragment() { // 主动获取当前电量 initBatteryStatus() - // 先用缓存数据填充(避免 "0" → 真实值的闪烁) - notificationManager.lastStats?.let { cached -> - updateCardNum(tvPoolNum, cached.waitForTask) - updateCardNum(tvPunchNum, cached.treatTask) - updateCardNum(tvCompleteNum, cached.incompleteTask) - } + // 先用持久化缓存填充(重启后也不会闪 0) + val statsPrefs = requireContext().getSharedPreferences("stats_cache", android.content.Context.MODE_PRIVATE) + val cachedPool = notificationManager.lastStats?.waitForTask ?: statsPrefs.getInt("pool", 0) + val cachedPunch = notificationManager.lastStats?.treatTask ?: statsPrefs.getInt("punch", 0) + val cachedComplete = notificationManager.lastStats?.incompleteTask ?: statsPrefs.getInt("complete", 0) + updateCardNum(tvPoolNum, cachedPool) + updateCardNum(tvPunchNum, cachedPunch) + updateCardNum(tvCompleteNum, cachedComplete) - // 再异步请求最新数据,静默更新 + // 再异步请求最新数据,静默更新 + 持久化 viewLifecycleOwner.lifecycleScope.launch { val result = safeApiCall { taskApi.getStatistics() } if (result is ApiResult.Success && result.data != null) { @@ -139,6 +141,12 @@ class HomeFragment : BaseFragment() { updateCardNum(tvPunchNum, data.treatTask) updateCardNum(tvCompleteNum, data.incompleteTask) notificationManager.lastStats = data + // 持久化到 SP(重启后可用) + statsPrefs.edit() + .putInt("pool", data.waitForTask) + .putInt("punch", data.treatTask) + .putInt("complete", data.incompleteTask) + .apply() } // 基准设好后再开始监听事件 @@ -412,6 +420,13 @@ class HomeFragment : BaseFragment() { updateCardNum(tvPoolNum, data.waitForTask) updateCardNum(tvPunchNum, data.treatTask) updateCardNum(tvCompleteNum, data.incompleteTask) + // 持久化(重启后可用) + requireContext().getSharedPreferences("stats_cache", android.content.Context.MODE_PRIVATE) + .edit() + .putInt("pool", data.waitForTask) + .putInt("punch", data.treatTask) + .putInt("complete", data.incompleteTask) + .apply() } } }