You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否将AdMob已加载RewardedAd存入SharedPreference并4小时内快速展示?

该方案不可行,原因及替代方案如下:

核心问题

  • RewardedAd对象无法序列化:AdMob的RewardedAd内部包含大量非序列化的资源(比如网络连接引用、SDK内部状态、视图关联对象),根本没法通过Base64转换存储。硬尝试序列化(比如用Java Serializable或Android Parcelable)会直接抛出异常,因为很多内部组件不支持序列化逻辑。
  • SharedPreference不适合存复杂对象:SharedPreference是为轻量键值对(字符串、布尔值等)设计的,就算能转成Base64字符串存储,也会导致SP文件体积过大,读写时拖慢性能,甚至引发ANR。
  • 广告本身有生命周期限制:就算你强行存下了对象,4小时后广告早已过期失效,调用展示时会直接报错。AdMob SDK本身就有广告缓存逻辑,不需要额外手动存储。

替代方案

  • 依赖AdMob自身缓存:每次展示前调用rewardedAd.isLoaded()检查广告有效性,失效则重新加载即可,SDK会自动处理缓存。
  • 定时预加载:设置定时任务(比如每隔3.5小时)重新加载广告,替换内存中的旧实例,保证随时有可用的有效广告。
  • 内存缓存:把RewardedAd实例存在全局单例或内存变量中,只要App进程存活就能快速调用;进程销毁后再重新加载即可,这比存SP靠谱得多。

内容的提问来源于stack exchange,提问作者Sajjad Akbari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 06:07:04