我正在尝试建立一个可以每5秒加载一次广告的可运行的广告(当然5秒太快,它仅用于测试目的)
这是我的代码:
package com.admobsdk_dfp_handler;
import com.google.ads.*;
import com.google.ads.doubleclick.*;
import android.os.Bundle;
import android.os.Handler;
import android.app.Activity;
import android.view.Menu;
import android.widget.RelativeLayout;
public class AdMobSDK_DFP_Handler extends Activity {
private DfpAdView adView;
private Handler handler = new Handler();
private Runnable runnable = new Runnable() {
public void run() {
adView.loadAd(new AdRequest());
handler.postDelayed(this, 5000);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ad_mob_sdk__dfp__handler);
adView = new DfpAdView(
this,
AdSize.BANNER,
AD_UNIT_ID);
RelativeLayout layout = (RelativeLayout) findViewById(R.id.mainLayout);
layout.addView(adView);
adView.loadAd(new AdRequest());
handler.postDelayed(runnable, 5000);
};
@Override
protected void onDestroy() {
handler.removeCallbacks(runnable);
super.onDestroy();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_ad_mob_sdk__dfp__handler,
menu);
return true;
}
}
如果我按主页按钮将应用程序隐藏到后台,则runnable会以5秒的间隔加载广告。
当应用程序隐藏在后台时,是否有任何方法可以停止runnable?非常感谢。
答案 0 :(得分:33)
只需使用onPause()
当某个活动进入后台时被称为活动生命周期的一部分,但尚未被杀死
@Override
protected void onPause() {
handler.removeCallbacks(runnable);
super.onPause();
}
可选
如果你想恢复那个可运行的。只需覆盖onResume()
回调
@Override
protected void onResume()
{
handler.postDelayed(runnable, 5000);
super.onResume();
}
还删除handler.postDelayed(runnable, 5000);
onCreate()
答案 1 :(得分:2)
onPause()
您可以放置onStop()
handler.removeCallbacks(runnable);
个函数
获取更多信息
答案 2 :(得分:0)
当应用程序进入后台时调用onPause()。删除onPause()
中的runnableprotected void onPause() {
handler.removeCallbacks(runnable);
super.onPause();
}