Android 應用中,用戶新增收貨地址提交服務器後,重新請求地址列表介面,有時能獲取到新數據,有時獲取不到,表現為數據同步延遲或不一致。
// 服務端代碼示例(偽代碼)
@Transactional
public Address saveAddress(Address address) {
addressDao.insert(address);
// 強制刷新緩存或讀取主庫
cacheService.evict("address_list_" + userId);
return addressDao.findById(address.getId()); // 返回最新數據
}
// Android 客戶端 Kotlin 協程示例
suspend fun refreshAddressListWithRetry(maxRetries: Int = 3, delayMs: Long = 500) {
repeat(maxRetries) { attempt ->
val addresses = api.getAddressList().await()
if (addresses.any { it.isNewlyAdded }) {
updateUI(addresses)
return
}
if (attempt < maxRetries - 1) delay(delayMs * (attempt + 1))
}
// 最後一次嘗試仍失敗,提示用戶手動刷新
showManualRefreshHint()
}
修改新增地址接口,直接返回包含新地址的完整列表,避免額外查詢請求。