【发布时间】:2017-01-19 00:21:09
【问题描述】:
使用横幅示例here,我注意到如果我改变方向,广告就会消失,然后重新加载(需要时间),所以每次我改变方向时都会有一段时间没有显示任何内容。
我知道可以通过清单为活动设置 configChanges(它确实有效),但通常不建议这样做。它有多个缺陷:
- 在我的例子中,例如,改变方向让工具栏保持在相同的高度,这是错误的,因为它在横向和纵向上应该是不同的。
- 转到另一个 Activity,Admob 视图仍会重新加载,即使之前已加载。
- 从纵向到横向(反之亦然)时,广告无法很好地适应新的方向。
在每次配置更改时,还可以做些什么来避免重新加载广告?
我希望 Admob 加载一次广告(其余的在后台加载,用于新广告),然后显示它们,并避免在我改变方向时重新加载。每次我达到它时,只显示最适合当前配置(例如方向)的配置。
同样适用于具有 Admob 广告的新 Activity。如果之前加载过,则无需重新加载。
编辑:我对此给予了赏金,因为 Google/Firebase 支持人员通过电子邮件告诉我,实际上可以缓存广告:
Ads SDK 不会为您缓存广告,但您可以实施 'AdManager' 样式类,很可能是单例或实例 附加到您的应用程序实例,它可以管理缓存 你。
如您所知,这是一种破坏和重建的 Android 模式 定向活动,通常保存实例状态并 通过捆绑包恢复,但这不适用于视图。
如果您希望在此优化横幅视图的重新加载时间 在这种情况下,我建议您通过 AdManager 提出广告请求 类,然后 AdManager 可以应用一些逻辑来缓存广告,例如 作为您的横幅视图一段时间,并返回 以前的横幅,如果它仍然对新请求有效(您 会改变方向)。
还有:
SDK 没有实现缓存广告的这种想法,因为它是 难以确定适用于所有情况的最佳缓存逻辑, 因此留给开发人员来实现适合他们的缓存 用例,如果需要的话。
可能将横幅广告与“AdView”类分离 制作更合适的可缓存对象,但这不是 目前是这样。
因此,是的,我们建议为了预取/缓存一个 横幅广告,您需要存储“AdView”。而不是使用 然而,AdManager 是另一种受支持且确实推荐的方法 将使用 ViewModel,请参阅 https://developer.android.com/guide/topics/resources/runtime-changes#RetainingAnObject 和 https://developer.android.com/topic/libraries/architecture/viewmodel。 这些正是为这种用例而设计的。
如果确实有可能,我想确切地知道该怎么做。请成功的人在代码中显示可以做什么。
【问题讨论】:
-
@Thracian 附加和分离然后呢?这其中的解决方案在哪里?
-
检查this
-
@Maddy 正如我所写,我已经使用了
android:configChanges,但这会导致新的问题,我已经解释过了。
标签: android admob orientation