Google Mobile Ads SDK是否需在每个Activity单独初始化
AdMob SDK初始化问题解答
你现在仅在MainActivity里初始化Google Mobile Ads SDK的写法是对的,完全没必要在每个Activity里都调用MobileAds.initialize()。
具体说明如下:
- 这个SDK的初始化是应用进程级别的,只要当前APP进程存活期间执行过一次初始化,全局所有页面的广告组件都能正常调用加载、展示逻辑,和你在哪个Activity调初始化没有绑定关系。你现在三个页面的广告都能正常展示,就是这个机制的正常表现。
- 你当前写法唯一的小问题是鲁棒性不够:如果有深链直达、通知栏点击直接跳转到Activity1/Activity2的场景,会出现二级页先触发广告加载、但MainActivity还没走onCreate执行初始化的时序问题,极端情况会导致广告请求失败。更推荐的做法是把初始化逻辑挪到自定义Application类的
onCreate里,APP启动就完成初始化,从根源上避免时序问题。 - 就算你误在多个页面重复调用了initialize也不会出什么大问题,SDK内部做了幂等处理,不会重复跑初始化逻辑占资源,只是属于无意义的冗余代码。
额外提示:不用等
onInitializationComplete回调触发之后再去请求广告,SDK内部会自动把初始化完成前的广告请求排队,等初始化结束自动执行,不会因为提前调用广告加载接口就导致请求失败。
内容的提问来源于stack exchange,提问作者lina0i0-29
相关产品推荐
相关产品推荐

