Android 每次暴露后应加载间隙
我需要在我的应用程序中使用Interstitulard。但问题是,在第一次曝光之后,在显示我正在创建广告之前,通过请求调用loadAd方法,然后在适当的时候显示(调用show方法)。一切似乎都很好,但当我下次尝试调用show方法时,它不起作用,因为isLoaded返回false。 有没有办法只加载一次广告 编辑Android 每次暴露后应加载间隙,android,admob,Android,Admob,我需要在我的应用程序中使用Interstitulard。但问题是,在第一次曝光之后,在显示我正在创建广告之前,通过请求调用loadAd方法,然后在适当的时候显示(调用show方法)。一切似乎都很好,但当我下次尝试调用show方法时,它不起作用,因为isLoaded返回false。 有没有办法只加载一次广告 编辑 Thx为答案,但主要问题是loadAd是网络连接,但google建议不要在主线程中执行internet任务,所以它在主ui线程中从internet加载广告是什么意思。这会导致我的应用程序
Thx为答案,但主要问题是loadAd是网络连接,但google建议不要在主线程中执行internet任务,所以它在主ui线程中从internet加载广告是什么意思。这会导致我的应用程序出现延迟。他们自相矛盾。你必须在广告关闭时重新加载广告。我定义了一个方法“reloadInterstitual()”并在onCreate()方法中调用它。它工作得很好。只要在希望显示广告时调用DisplayInterstitual():
public class MyActivityClass extends Activity{
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
interstitial = new InterstitialAd(MyActivityClass.this);
interstitial.setAdUnitId("*****");
reloadInterstitial();
// Create ad request
AdRequest adRequest = new AdRequest.Builder().build();
// Begin loading your interstitial
interstitial.loadAd(adRequest);
}
public void displayInterstitial(){
if(interstitial != null && interstitial.isLoaded())
interstitial.show();
}
private void reloadInterstitial(){
interstitial.setAdListener(new AdListener() {
@Override
public void onAdLoaded() {
// TODO Auto-generated method stub
super.onAdLoaded();
}
@Override
public void onAdFailedToLoad(int errorCode) {
// TODO Auto-generated method stub
super.onAdFailedToLoad(errorCode);
interstitial = new InterstitialAd(MyActivityClass.this);
interstitial.setAdUnitId("*****");
// Begin loading your interstitial
interstitial.loadAd(new AdRequest.Builder().build());
loadInterCallBacks();
}
@Override
public void onAdOpened() {
// TODO Auto-generated method stub
super.onAdOpened();
}
@Override
public void onAdClosed() {
// TODO Auto-generated method stub
super.onAdClosed();
interstitial = new InterstitialAd(MyActivityClass.this);
interstitial.setAdUnitId("****");
loadInterCallBacks();
// Begin loading your interstitial
interstitial.loadAd(new AdRequest.Builder().build());
}
@Override
public void onAdLeftApplication() {
// TODO Auto-generated method stub
super.onAdLeftApplication();
}
});
}
private void loadInterCallBacks(){
interstitial.setAdListener(new AdListener() {
@Override
public void onAdLoaded() {
// TODO Auto-generated method stub
super.onAdLoaded();
}
@Override
public void onAdFailedToLoad(int errorCode) {
// TODO Auto-generated method stub
super.onAdFailedToLoad(errorCode);
interstitial = new InterstitialAd(MyActivityClass.this);
interstitial.setAdUnitId("xxxxxxxxxxx");
// Begin loading your interstitial
interstitial.loadAd(new AdRequest.Builder().build());
loadInterCallBacks();
}
@Override
public void onAdOpened() {
// TODO Auto-generated method stub
super.onAdOpened();
}
@Override
public void onAdClosed() {
// TODO Auto-generated method stub
super.onAdClosed();
interstitial = new InterstitialAd(MyActivityClass.this);
interstitial.setAdUnitId("xxxxxx");
loadInterCallBacks();
// Begin loading your interstitial
interstitial.loadAd(new AdRequest.Builder().build());
}
@Override
public void onAdLeftApplication() {
// TODO Auto-generated method stub
super.onAdLeftApplication();
}
});
}
Thx为答案,但主要问题是loadAd是网络连接,但google建议不要在主线程中执行internet任务,所以它在主ui线程中从internet加载广告是什么意思。这会导致我的应用程序出现延迟。他们在自相矛盾。他们试图告诉你的是用一个后台线程来做网络的事情。。。