使用横幅样本 here,我注意到如果我改变方向,广告就会消失,然后重新加载(需要时间),所以每当我改变方向时,都会有时间显示任何内容.

我知道可以通过清单为活动设置configChanges(实际上它可以正常工作),但这不是一般的建议.它有多个缺陷:

>在我的情况下,例如,更改方向让工具栏保持在相同的高度,这是错误的,因为它应该在横向上与在纵向上不同.
>转到另一个活动Admob视图仍会重新加载,即使之前已加载.
>当从纵向转向横向时,反之亦然,广告无法很好地适应新的方向.

在每次配置更改时,还可以采取哪些措施来避免重新加载广告?

我希望Admob一次加载广告(其余部分在后台加载新广告),然后展示,并避免在我更改方向时重新加载.每次到达时,只显示当前配置(例如方向)的最佳状态.

同样适用于使用Admob广告的新活动.如果之前加载,则无需重新加载.

编辑:我已经给了这个奖励,因为Google / Firebase支持通过电子邮件告诉我,实际上可以缓存广告:

The Ads SDK won’t cache ads for you,however you can implement an
‘AdManager’ style class,most likely a singleton or an instance
attached to your application instance,which can manage caching for
you.

As you recognize it’s an Android pattern to destroy and recreate
activities on orientation,instance state is usually saved and
restored via a bundle,but this is not applicable to views.

If you wish to optimize the reload time of the banner view in this
scenario,I would recommend making your ad request via an AdManager
class,and the AdManager can then apply some logic to cache ads such
as your banner view for a certain amount of time,and return the
prevIoUs banner if it is still valid for the new request (which you
would make on orientation change).

而且:

This idea of caching ads is not implemented by the SDK,as it is
difficult to determine the best caching logic to apply in all cases,
thus it is left to the developer to implement caching that suits their
use case,if desired.

Possibly having a banner ad decoupled from the ‘AdView’ class would
make for more appropriate cacheable objects,however this is not
currently the case.

Therefore as it is,yes we suggest that in order to prefetch / cache a
banner ad,you need to store the ‘AdView’. Instead of using an
AdManager however,another supported and indeed recommended approach
would be to use a viewmodel,see
07001
and
07002.
These are designed for exactly this kind of use case.

如果确实有可能,我想知道如何做到这一点.请成功执行此操作的人员,在代码中显示可以执行的操作.

解决方法

我认为使用智能横幅将是一个不错的选择,因为它们适用于任何方向
要使用智能横幅,请为广告尺寸指定常量SMART_BANNER:
AdView adView = new AdView(this);

adView.setAdSize(AdSize.SMART_BANNER);

还检查一下:
https://firebase.google.com/docs/admob/android/banner#smart_banners

android – 如何避免在配置更改和启动活动时重新加载Admob广告?的更多相关文章

  1. ios – 当我在xCode 5中验证我的应用程序时,获取错误的广告标识符[IDFA]错误

    在验证我的应用程序时,我收到错误消息“广告标识符使用不当.您的应用包含广告标识符[IDFA]API,但您尚未遵守iOS中的限制广告跟踪设置.”我在广告标识符的准备上传页面上检查了“是”.我在我的应用程序中使用revmob广告和flurry分析(COCOS2D-X项目).如何解决这个问题,我已经尝试了很多但没有成功.我使用下面的代码进入appdelegate但没有运气.解决方法这个IDFA问题今天仍

  2. iOS上的自定义BLE广告

    有没有使用私有API或越狱的替代品?解决方法我对iOS的体验是,如果它没有在API中公开,除了越狱之外没有办法解决.对于蓝牙低功耗,API处于GAP/GATT级别,而较低级别暴露的则很少.广告是LL(链接层)功能.为了说明访问受限制的限制:扫描BLE设备时,您将无法访问广告商的MAC地址iOS.在Android中你有它.

  3. Admob ios x64错误

    我正试图在iPadMiniRetina上测试AdmobBanner.现在我收到这个错误:Undefinedsymbolsforarchitecturearm64:“_SCNetworkReachabilityCreateWithAddress”,referencedfrom:l002inlibGoogleAdMobAds.a(GADGestureUtil.o)“_AudioServicesPlay

  4. ios – 蓝牙LE,scanForPeripheralsWithServices在后台增加速度

    我在iPhone5S上使用蓝牙LE,我做了以下工作:>我有一个蓝牙外设,我配置它在所有三个蓝牙广告频道(37,38和39)上宣布每20秒.>我已经配置了我的应用程序与UIBacgroundModes=蓝牙中央在Info.plist>我已经启动了一个scanForperipheralsWithServices,如下所示码:目前的状态是:>在前台模式下,当我启动外围设备时(一秒钟内),应用程序会迅速收

  5. ios – 所有ViewControllers中的AdMod单个实例

    如果我在AppDelegate中创建1个实例作为自动释放并保留在每个viewController中并在viewDidUnload上释放它然后在下一个标签项中我再次保留它等等…解决方法AppDelegateaproach是一个很好的方法,但你不应该在每个viewcontroller中保留admob的实例,并在viewDidUnload方法中释放它.而不是这样做只需在每个viewcontroller的viewDidLoad方法中添加admob的视图作为子视图.通过这种方式,AppDelegate中只有一个Ad

  6. 2014年4月/ iOS 7 – 有没有办法跟踪iOS应用的转换,以便在不使用IDFA的情况下将内容下载到不同的广告系列来源?

    解决方法它现在似乎Apple特别允许使用IDFA跟踪安装.更新我的应用程序时,我看到:选择第二个选项没有出错,应用程序已获批准.

  7. 使用swift集成移动广告聚合平台

    OverridefuncviewDidLoad(){super.viewDidLoad()bannerView.adUnitId=“ca-app-pub-706657930853688714815911455”bannerView.rootViewController=selfself.view.addSubViewVarrequest:GADRequest=GADRequest()request.testDevices={“”}bannerView.loadRequest}Overridefuncdid

  8. swift – 为什么我的facebook插页式广告不会显示在我的应用中?

    他们肯定也能在这里提供帮助.thispage之后的某个地方我相信你可以找到适当的现场支持作为付费广告客户.

  9. 设置Android隐私政策

    我在我的Android应用程序中使用AdMob.我是否需要在我的应用程序中创建隐私政策,以告知用户Google使用的Cookie?如果是,我需要把它放在哪里?我必须在GooglePlay上的说明中写出来吗?或者在第一次运行时我必须显示片段窗口吗?我阅读了Google文档,但我并不清楚.https://support.google.com/googleplay/android-developer/answer/2519872?hl=en解决方法澄清任何发现此问题的人:答案是肯定的,如果您使用的是AdMob,

  10. android – 使用AdMob的Google Play服务.检查可用性?

    解决方法GooglePlay服务包含两个组件.一个是链接到应用程序的jar,另一个是系统的一部分.AdMob广告显示组件位于jar中,而其他播放服务位于系统中.如果使用GooglePlay服务构建应用,您将能够展示AdMob广告,但您将无法获得其他一些GooglePlay服务功能.所以,是的,当您的应用程序链接到库时,某些GooglePlay服务类将包含在您的APK中.也可以使用旧的AdMobSDK来显示AdMob广告.

随机推荐

  1. bluetooth-lowenergy – Altbeacon库无法在Android 5.0上运行

    昨天我在Nexus4上获得了Android5.0的更新,并且altbeacon库停止了检测信标.似乎在监视和测距时,didEnterRegion和didRangeBeaconsInRegion都没有被调用.即使RadiusNetworks的Locate应用程序现在表现不同,一旦检测到信标的值,它们就不再得到更新,并且通常看起来好像信标超出了范围.我注意到的一点是,现在在logcat中出现以下行“B

  2. android – react-native动态更改响应者

    我正在使用react-native进行Android开发.我有一个视图,如果用户长按,我想显示一个可以拖动的动画视图.我可以使用PanResponder实现这一点,它工作正常.但我想要做的是当用户长按时,用户应该能够继续相同的触摸/按下并拖动新显示的Animated.View.如果您熟悉Google云端硬盘应用,则它具有类似的功能.当用户长按列表中的任何项目时,它会显示可拖动的项目.用户可以直接拖

  3. android – 是否有可能通过使用与最初使用的证书不同的证书对其进行签名来发布更新的应用程序

    是否可以通过使用与最初使用的证书不同的证书进行签名来发布Android应用程序的更新?我知道当我们尝试将这样的构建上传到市场时,它通常会给出错误消息.但有没有任何出路,比如将其标记为主要版本,指定市场中的某个地方?解决方法不,你不能这样做.证书是一种工具,可确保您是首次上传应用程序的人.所以总是备份密钥库!

  4. 如何检测Android中是否存在麦克风?

    ..所以我想在让用户访问语音输入功能之前检测麦克风是否存在.如何检测设备上是否有麦克风.谢谢.解决方法AndroidAPI参考:hasSystemFeature

  5. Android – 调用GONE然后VISIBLE使视图显示在错误的位置

    我有两个视图,A和B,视图A在视图B上方.当我以编程方式将视图A设置为GONE时,它将消失,并且它正下方的视图将转到视图A的位置.但是,当我再次将相同的视图设置为VISIBLE时,它会在视图B上显示.我不希望这样.我希望视图B回到原来的位置,这是我认为会发生的事情.我怎样才能做到这一点?编辑–代码}这里是XML:解决方法您可以尝试将两个视图放在RelativeLayout中并相对于彼此设置它们的位置.

  6. android – 获得一首歌的流派

    我如何阅读与歌曲相关的流派?我可以读这首歌,但是如何抓住这首歌的流派,它存放在哪里?解决方法检查此代码:

  7. android – 使用textShadow折叠工具栏

    我有一个折叠工具栏的问题,在展开状态我想在文本下面有一个模糊的阴影,我使用这段代码:用:我可以更改textColor,它可以工作,但阴影不起作用.我为阴影尝试了很多不同的值.是否可以为折叠文本投射阴影?

  8. android – 重用arm共享库

    我已经建立了armarm共享库.我有兴趣重用一个函数.我想调用该函数并获得返回值.有可能做这样的事吗?我没有任何头文件.我试过这个Android.mk,我把libtest.so放在/jni和/libs/armeabi,/lib/armeabi中.此时我的cpp文件编译,但现在是什么?我从objdump知道它的名字编辑:我试图用这个android.mk从hello-jni示例中添加prebuild库:它工作,但libtest.so相同的代码显示以下错误(启动时)libtest.so存在于libhello-j

  9. android – 为NumberPicker捕获键盘’Done’

    我有一个AlertDialog只有一些文本,一个NumberPicker,一个OK和一个取消.(我知道,这个对话框还没有做它应该保留暂停和恢复状态的事情.)我想在软键盘或其他IME上执行“完成”操作来关闭对话框,就像按下了“OK”一样,因为只有一个小部件可以编辑.看起来处理IME“Done”的最佳方法通常是在TextView上使用setonEditorActionListener.但我没有任何Te

  10. android – 想要在调用WebChromeClient#onCreateWindow时知道目标URL

    当我点击一个带有target=“_blank”属性的超链接时,会调用WebChromeClient#onCreateWindow,但我找不到新的窗口将打开的新方法?主页url是我唯一能知道的东西?我想根据目标网址更改应用行为.任何帮助表示赞赏,谢谢!

返回
顶部