移动应用不能把“网络请求成功”当成页面可用的前提。
用户可能在地铁、电梯、地下停车场或弱网环境中打开应用;接口也可能偶发超时。一个只会“请求成功就展示、请求失败就白屏”的页面,即使代码分层完整,也称不上可靠。
离线优先不是给 Retrofit 加一层缓存,而是重新规定数据流向:
┌──────────────┐
│ Remote API │
└──────┬───────┘
│ refresh
▼
Compose UI ← StateFlow ← Repository ← Room Database
▲
│ transaction
└── 网络结果只写入本地库
页面始终观察 Room;网络请求成功后不直接把结果塞给 UI,而是在事务中写入 Room,再由 Flow 自动通知页面。网络失败时,只要本地已有数据,页面仍能正常使用。
本文以“文章列表”为例,完整实现:
- Room Entity、DAO、Database 与迁移;
Flow驱动的本地唯一可
订阅专栏 解锁全文
&spm=1001.2101.3001.5002&articleId=166129707&d=1&t=3&u=c3c4e45793dc4c39b12cd9bf33f16dc1)
436

被折叠的 条评论
为什么被折叠?



