【问题标题】:How to stop interstitial ads showing up after app exit?如何在应用退出后停止显示插页式广告?
【发布时间】:2017-03-08 11:45:53
【问题描述】:

我的应用会在应用中显示插页式广告,有时会在应用因网速慢而关闭后显示。在应用关闭后显示插页式广告违反了 admob 规则。如何在应用关闭后阻止插页式广告展示广告??

public class des extends AppCompatActivity {

    ImageButton imageView15;
    InterstitialAd mInterstitialAd;
    private InterstitialAd interstitial;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_des);

        AdView mAdView = (AdView) findViewById(R.id.AdView);
        AdRequest adRequest = new AdRequest.Builder().build();
        mAdView.loadAd(adRequest);

                   // Prepare the Interstitial Ad
        interstitial = new InterstitialAd(des.this);
// Insert the Ad Unit ID
        interstitial.setAdUnitId(getString(R.string.intertitial_id));

        interstitial.loadAd(adRequest);
// Prepare an Interstitial Ad Listener
        interstitial.setAdListener(new AdListener() {
            public void onAdLoaded() {
                // Call displayInterstitial() function
                displayInterstitial();
            }
        });


        imageView15 = (ImageButton) findViewById(R.id.imageView15);
        imageView15.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intentLoadNewActivity = new Intent(des.this,vid.class);
                startActivity(intentLoadNewActivity);
            }
        });


    }

    public void displayInterstitial() {
// If Ads are loaded, show Interstitial else show nothing.
        if (interstitial.isLoaded()) {
            interstitial.show();
        }
    }


}

【问题讨论】:

    标签: java android ios admob ads


    【解决方案1】:

    问题是您在 OnAdLoaded 中显示不建议的添加。这会导致不良行为并在用户执行其他工作时拦截。所以您应该在活动开始时加载您的广告,然后您应该显示它在通过检查是否已加载用户不受影响的时候。 这样,在用户使用完您的应用后,您的广告将不会显示,您的问题将得到解决。

    【讨论】:

      【解决方案2】:

      您可以跟踪活动生命周期,然后在展示广告之前检查活动是否正在运行。

      1. 创建实例变量:

        private boolean isRunning;
        
      2. 跟踪活动生命周期:

        @Override
        protected void onStart() {
            super.onStart();
            isRunning = true;
        }
        
        @Override
        protected void onStop() {
            super.onStop();
            isRunning = false;
        } 
        
      3. 在展示广告之前检查活动是否正在运行:

        public void displayInterstitial() {
            // If Ads are loaded and the activity is running, show Interstitial else show nothing.
            if (isRunning && interstitial.isLoaded()) {
                interstitial.show();
            }
        }
        

      【讨论】:

      • 宁可使用 onPause 和 onResume 来避免在显示对话框时、在多窗口中以及当应用程序未聚焦时出现无效活动。
      【解决方案3】:

      或者,只要您的应用不包含任何服务类,您就可以在用户想要退出您的应用时使用:system.exit(0);

      【讨论】:

        【解决方案4】:

        您需要在活动结束或(退出应用程序)时销毁您的广告

        试试这个

        @Override
        public void onDestroy()
        {
            super.onDestroy();
            if (mInterstitialAd != null) {
                mInterstitialAd.destroy();
            }
        }
        

        【讨论】:

        • 你能用 onDestroy() 编辑我的 java 代码吗?因为当我尝试它不工作时,destroy 字会变成红色,我不知道如何修复它,我尝试了 alt+enter im new to app development跨度>
        • 需要重写onDestroy()方法快捷键(Ctrl+O)
        • 尝试在没有 if 块的情况下运行 just destroy 方法
        • mInterstitialAd.destroy() 不存在
        猜你喜欢
        • 1970-01-01
        • 2015-06-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多