恢复PhoneGap 3.0的AdMob显示空白页,直到触摸屏幕

时间:2013-12-11 00:14:14

标签: android cordova admob

我使用PhoneGap 3.0创建了一个应用程序,其中包括Google AdMob和Facebook SDK。

有时,应用暂停后(例如按“主页”),再次启动时,浏览器视口为空(屏幕底部的AdMob广告仍会显示)。只要在Web视图中触摸,它就会正确呈现页面。 Web视图底部大约5个像素始终可见。

我试图在此处添加屏幕截图,但是截取屏幕也会导致页面正确呈现!

这听起来像是Android / HTC Sense /驱动程序等的内部问题。当我在HTC One上测试Android 4.3中的应用程序时会出现问题。我也试过2.3,我无法重现这个问题。

LogCat消息中没有任何有用的东西 - 唯一可能相关的事件是MainScreen - Summary updated,当我触摸Web视图以强制它呈现内容时会发生这种情况。

我接下来的步骤是创建一个空白的PhoneGap应用程序,看看我是否可以重现它,一次添加一些功能(Facebook,AdMob),直到它再次发生以尝试找出原因。

有没有人有类似问题的经验,或者你能提出我可以尝试的任何建议吗?

更新

如果我删除了加载AdMob广告的代码,则问题就会消失。这肯定是由AdMob引起的。这是我用来加载广告的代码:

    mHandler.postDelayed(new Runnable() {
        public void run() {
            loadAd();
        }
    }, 2000); 


    private void loadAd() {
        adView = new AdView(this, AdSize.BANNER, "my-id");
        LinearLayout layout = super.root;
        layout.addView(adView);
        layout.setHorizontalGravity(android.view.Gravity.CENTER_HORIZONTAL);
        adView.loadAd(new AdRequest());
    }

2 个答案:

答案 0 :(得分:0)

要解决此问题,我会在暂停应用时删除AdView,并在应用恢复后再次创建。

@Override
protected void onPause() {
  super.onPause();

  if (adView != null) {
    LinearLayout layout = super.root;
    layout.removeView(adView);
  }
}

这样可行,所以现在就行了。它还可以防止AdView继续在后台加载广告,这是一个奖励。

如果有人有更好的答案,请随时告诉我!

答案 1 :(得分:0)

您需要覆盖以响应onResume事件。

@Override
public void onResume(boolean multitasking) {
    super.onResume(multitasking);
    if (adView != null) {
        adView.resume();
    }
}