现在我正在处理一个包含插页式广告的应用,但我面临的一个问题是,我想在每2分钟后仅在MainActivity中展示广告,当我继续进行下一个活动时,它将会停止。对于这个实现,我做了类似的事情,
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();
}
prepareAd();
}
});
}
}, 1, 120, TimeUnit.SECONDS);
public void prepareAd(){
mInterstitialAd = new InterstitialAd(this);
mInterstitialAd.setAdUnitId("ca-app-pub-xxxxxxxxxxxxxxxxx/xxxxxxxxxx");
mInterstitialAd.loadAd(new AdRequest.Builder().build());
}
答案 0 :(得分:0)
首先创建一个全局引用:
boolean isActivityIsVisible = true;
然后通过覆盖活动的生命周期来检查:
@Override
protected void onPause() {
super.onPause();
isActivityIsVisible = false;
}
@Override
protected void onResume() {
super.onResume();
isActivityIsVisible = true;
}
@Override
protected void onStop() {
super.onStop();
isActivityIsVisible = false;
}
检查插页式广告中的活动是否可见,如果可见则显示。
mInterstitialAd.setAdListener(new AdListener() {
@Override
public void onAdClosed() {
prepareAd();
}
public void onAdLoaded(){
if (isActivityIsVisible) { mInterstitialAd.show(); }
}
});
希望它有所帮助。
答案 1 :(得分:0)
How to stop a ScheduledExecutorService?
在第一个活动的onPause方法中执行此操作。然后在onCreate()
中再次启动它