Android adMob AdvIew在布局膨胀时请求访问互联网

时间:2013-09-28 03:07:38

标签: android admob

我的布局中有com.google.ads.AdView。我有我的应用程序的精简版和专业版,如果专业版正在运行,则隐藏布局。

AdView设置为不在create:

上加载添加
   <com.google.ads.AdView
       xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
       android:id="@+id/adView"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_gravity="center|bottom"
       ads:adSize="IAB_MRECT"
       ads:adUnitId="a15235585e60557"
       ads:loadAdOnCreate="false"
       android:gravity="bottom" />

但是,当从我的OnCreate()

调用以下代码行时
setContentView(R.layout.myactivity);

logcat中显示以下错误(对于专业版,清单中没有INTERNET权限):

E / Ads(30709):必须在AndroidManifest.xml中启用INTERNET权限。 E / Ads(30709):您必须在AndroidManifest.xml中拥有INTERNET和ACCESS_NETWORK_STATE权限。

现在,这不是一个致命的错误,因为应用程序可以继续加载,但它会导致加载进程挂起,因为正在发生的任何Internet访问,正在UI线程上发生 - 导致应用程序交出加载几秒钟。事实上,如果我给应用程序INTERNET权限,我在logcat中会收到以下消息:

I / Choreographer(30487):跳过32帧!应用程序可能在其主线程上做了太多工作。

现在,当然,有各种方法可以解决这个问题。我可以考虑做以下事情:

  • 为Lite / Full版本提供单独的布局,只需要对Lite版本的暂停“make do”
  • 在应用程序加载并显示其初始布局之后,以编程方式添加AddView。这会使它不那么明显,因为一旦屏幕显示,用户不太可能想要与应用程序交互

但这些只是解决方法。我真的更愿意知道为什么布局试图访问互联网,以及如何防止它这样做。

0 个答案:

没有答案