Android Kotlin中多横幅广告AdListener代码优化问询
优化多个AdListener冗余代码的可行方案
当然不用重复写十次相同的代码!你完全可以像优化按钮点击监听那样,通过复用实例或批量处理的方式消除冗余,下面给你两种简单直接的解决方案:
方案1:复用同一个AdListener实例
既然所有广告的onAdLoaded()逻辑完全一致,你只需要定义一个通用的AdListener实例,再把它赋值给每一个广告即可——这和复用按钮的OnClickListener逻辑完全相同:
// 先定义一个通用的AdListener实例 val sharedAdListener = object : AdListener() { override fun onAdLoaded() { super.onAdLoaded() incrementCounter() } } // 给所有广告复用同一个监听实例 ad1.adListener = sharedAdListener ad2.adListener = sharedAdListener ad3.adListener = sharedAdListener // ... 以此类推到ad10
方案2:集合批量处理(更简洁)
如果广告数量较多,你可以把所有广告对象存入集合,通过遍历批量设置监听,进一步减少重复代码:
// 定义通用监听实例 val sharedAdListener = object : AdListener() { override fun onAdLoaded() { super.onAdLoaded() incrementCounter() } } // 将所有广告放入集合,批量设置监听 val adList = listOf(ad1, ad2, ad3, ad4, ad5, ad6, ad7, ad8, ad9, ad10) adList.forEach { ad -> ad.adListener = sharedAdListener }
关于你之前尝试按钮方式未成功的小提示
按钮的OnClickListener和AdListener都是接口类型,复用实例的逻辑是完全相通的。如果之前尝试没成功,大概率是不小心为每个广告都创建了新的匿名实例(就像你原来的代码那样),而不是复用同一个实例。只要确保所有广告都指向同一个sharedAdListener对象,就能实现代码复用啦。
内容的提问来源于stack exchange,提问作者Jaydip Kalkani
相关产品推荐
相关产品推荐

