[英]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.