如何使用Android Studio在原生代码中为所有Activity添加AdMob横幅广告
你不需要将相同代码逐一添加到每个页面,有两种成熟的实现方案可以完成全局统一添加横幅广告的需求:
方案1:基类Activity封装(适合新手,逻辑清晰易维护)
- 首先创建通用布局文件
activity_base_with_ad.xml,根布局采用垂直方向LinearLayout,上层放一个空的FrameLayout作为业务内容容器,底部固定放置AdMob的AdView广告控件 - 新建抽象基类
BaseAdActivity继承AppCompatActivity,重写setContentView方法:优先加载activity_base_with_ad.xml,再将子类传入的业务布局inflate到前置预留的FrameLayout容器中;同时在基类的onCreate、onPause、onResume、onDestroy生命周期中统一处理AdView的初始化、广告加载、状态同步与资源销毁逻辑 - 后续所有需要展示广告的Activity都继承
BaseAdActivity即可,无需再单独编写广告相关代码,原有业务逻辑和布局也不需要做大幅调整
方案2:全局生命周期监听注入(无侵入,适合已完成大量页面开发的项目)
- 自定义Application类,在
onCreate方法中调用registerActivityLifecycleCallbacks注册全局Activity生命周期监听 - 重写监听回调的
onActivityCreated方法,当每个Activity创建完成后,获取Activity根布局(对应id为android.R.id.content的FrameLayout),动态将AdView添加到布局的顶部/底部位置,同时统一执行广告加载逻辑 - 配套在
onActivityDestroyed回调中销毁对应Activity的AdView实例,避免内存泄漏
该方案不需要修改现有任何Activity的代码,接入成本最低
注意事项
- 禁止全局复用同一个AdView实例,每个Activity需对应单独的AdView实例,否则会出现View父类附着冲突
- 可以封装全局统一的广告请求工具类,复用广告请求配置,减少重复请求提升加载效率
- 需严格按照AdMob要求处理广告的生命周期回调,避免出现展示异常或者平台违规问题
内容的提问来源于stack exchange,提问作者Sun
相关产品推荐
相关产品推荐

