我需要每隔 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());
}
}
最佳答案
似乎您的 Activity 在后台,然后用户将能够看到广告,因为一旦您的 Activity 被销毁,您的广告将无法显示,没有 this
上下文没有 Activity 。
首先:在 onCreate
之外保留对 ScheduledExecutorService
的引用
第二:覆盖 onStop
并调用 scheduler.shutdownNow()
。
onStop
: 当你的 Activity 进入后台状态时它会被调用
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;
}
}
关于android - 如何每 X 秒显示插页式广告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47857786/