为无广告用户安全地从LinearLayout中删除AdView

时间:2019-07-12 14:56:49

标签: android android-linearlayout adview

我有一个带有横幅广告的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);
                }
            }
        }});
}

1 个答案:

答案 0 :(得分:1)

首选方法是从其父remove() AdView
为什么不将“可见性”设置为“消失”?
如果将可见性设置为GONE,则AdView仍会请求广告服务器填写广告,因此最好将AdView完全删除。

例如-
在您的布局文件中添加AdView,如果用户通过IAP删除了广告,则只需致电myLayout.removeView(mAdView);

如果您是从ui线程中调用runOnUiThread()的,则也不需要调用turnAdvertsOnOff()