[英]Safely Removing an AdView from a LinearLayout for Ad Free Users
我有一个带有横幅广告的Android应用。 仅在检查广告是否可以显示之后,才将AdView元素放入LinearLayout中。
但是,用户可以在程序运行期间购买NoAd。 这意味着我必须安全地停止广告并将Adview从程序中删除,而不会违反Admob规则,在该规则中您无法隐藏广告。
这里是我的代码,但我对在部分非常不确定if
上线的语句if (mAdView != null) { // It might not be created yet
。
那只是隐藏它,而不是完全删除它吗?:
public void turnAdvertsOnOff(boolean on) {
advertsOn = on;
// IMPORTANT - changes to layout must be done on the UI Thread or will get error
m_Context.runOnUiThread(new Runnable() {
@Override
public void run() {
LinearLayout myLayout;
// NEW
//AdView mAdView;
myLayout = (LinearLayout) m_Context.findViewById(R.id.myLayout);
//mAdView = (AdView) m_Context.findViewById(R.id.adView);
if(advertsOn){
if(mAdView == null && myLayout != null) {
// Create it and add it to the LinearLayout
mAdView = new AdView(m_Context);
// Sizes BANNER, SMART_BANNER, LARGE_BANNER
mAdView.setAdSize(AdSize.SMART_BANNER);
mAdView.setAdUnitId(adIdBanner);
myLayout.addView(mAdView);
}
if (mAdView != null) mAdView.setVisibility(View.VISIBLE);
}else {
if (mAdView != null) { // It might not be created yet
mAdView.pause();
mAdView.setEnabled(false);
mAdView.setVisibility(View.GONE);
//mAdView.destroy();
//mAdView.setVisibility(View.INVISIBLE);
//mAdView.pause();
//mAdView.setVisibility(View.GONE);
}
}
}});
}
首选方法是从其父项中remove()
AdView
。
为什么不将“可见性”设置为“消失”?
如果您将可见性设置为GONE,则AdView仍将请求Ad Server填充广告,因此最好完全删除AdView
。
例如 -
如果用户已通过IAP删除了广告,则在布局文件中添加AdView,只需调用myLayout.removeView(mAdView);
同样,如果您正在从ui线程中调用turnAdvertsOnOff()
,则无需调用runOnUiThread()
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.