我有一个带有横幅广告的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);
}
}
}});
}
答案 0 :(得分:1)
首选方法是从其父remove()
AdView
。
为什么不将“可见性”设置为“消失”?
如果将可见性设置为GONE,则AdView仍会请求广告服务器填写广告,因此最好将AdView
完全删除。
例如-
在您的布局文件中添加AdView,如果用户通过IAP删除了广告,则只需致电myLayout.removeView(mAdView);
如果您是从ui线程中调用runOnUiThread()
的,则也不需要调用turnAdvertsOnOff()
。