微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

android – 如何每隔X秒显示插页式广告

我需要每隔x秒在我的应用中显示插页式广告.我已经封闭了这段代码.它工作正常,但问题是,即使应用关闭,插页式广告仍会显示.

关闭应用程序后如何才能停止此操作?

谢谢.

public class MainActivity extends AppCompatActivity {

    private InterstitialAd mInterstitialAd;

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

        prepareAd();

        scheduledexecutorservice scheduler =
                Executors.newSingleThreadScheduledExecutor();

        scheduler.scheduleAtFixedrate(new Runnable() {
            public void run() {
                Log.i("hello", "world");
                runOnUiThread(new Runnable() {
                    public void run() {
                        if (mInterstitialAd.isLoaded()) {
                            mInterstitialAd.show();
                        } else {
                           Log.d("TAG"," Interstitial not loaded");
                        }

                        prepareAd();
                    }
                });
            }
        }, 10, 10, TimeUnit.SECONDS);
    }

    public void  prepareAd() {
        mInterstitialAd = new InterstitialAd(this);
        mInterstitialAd.setAdUnitId("ca-app-pub-3940256099942544/1033173712");
        mInterstitialAd.loadAd(new AdRequest.Builder().build());
    }
}

解决方法:

您的活动似乎在后台,然后用户可以看到广告,因为一旦您的活动被销毁,您的广告就无法展示,没有此上下文没有活动.

第一:在onCreate之外保留对scheduledexecutorservice的引用

第二:覆盖onStop并调用scheduler.shutdownNow().

onStop:当您的活动进入后台状态时,将调用

shutdownNow():将尝试停止当前正在运行的任务并停止执行等待任务

因此,即使您的应用程序处于后台,这也将停止执行程序

public class MainActivity extends AppCompatActivity {

    private InterstitialAd mInterstitialAd;
    private scheduledexecutorservice scheduler;
    private boolean isVisible;

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


    @Override
    protected void onStart(){
    super.onStart();
        isVisible = true;
        if(scheduler == null){
            scheduler = Executors.newSingleThreadScheduledExecutor();
            scheduler.scheduleAtFixedrate(new Runnable() {
        public void run() {
            Log.i("hello", "world");
            runOnUiThread(new Runnable() {
                public void run() {
                    if (mInterstitialAd.isLoaded() && isVisible) {
                        mInterstitialAd.show();
                    } else {
                       Log.d("TAG"," Interstitial not loaded");
                    }

                    prepareAd();
                }
            });
        }
    }, 10, 10, TimeUnit.SECONDS);

        }

    }    
    //.. code 

    @Override
    protected void onStop() {
        super.onStop();
        scheduler.shutdownNow();
        scheduler = null;
        isVisible =false;
   }

}

原文地址:https://www.jb51.cc/android/1075123.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐