我使用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());
}
答案 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();
}
}