咨询Google Play Billing Library 5离线购买缓存的有效时长
无网络环境下Google Play缓存返回购买记录的时长说明
Google Play Billing库的本地缓存策略属于内部实现细节,官方并未公开缓存购买记录的具体有效期,这个时长可能会随以下因素变化:
- Billing库的版本迭代
- 设备的Android系统版本
- 设备上Google Play服务的版本
针对你描述的场景补充说明:
- 调用
mBillingClient.queryPurchasesAsync(SkuType.INAPP, purchaseResponseListener);时,断网状态下会优先读取本地缓存的购买记录并返回至onPurchasesUpdated(),这一过程只要缓存未失效就能完成。 - 你遇到的20秒后触发
onBillingError(),确实是因为同时调用了querySkuDetailsAsync()——该接口必须联网获取商品详情,断网时会超时抛出错误,和queryPurchasesAsync()的缓存逻辑无关。
如果需要尽可能保障无网时购买记录的可用性,可以参考以下做法:
- 维持BillingClient的
READY状态,避免频繁销毁重建客户端导致缓存重置 - 不要清理Google Play服务的应用缓存,否则会直接清空本地存储的购买数据
- 在联网状态下定期调用
queryPurchasesAsync()刷新本地缓存,确保缓存数据的有效性
内容的提问来源于stack exchange,提问作者Flyview
相关产品推荐
相关产品推荐

