【问题标题】:AdMob - better performance in android activityAdMob - 在 android 活动中表现更好
【发布时间】:2013-05-05 15:07:27
【问题描述】:

我有一个我在其中实施 AdMob 广告的 android 应用程序。

我的布局代码很简单——将 AdView 添加到 LinearLayout 中:

<com.google.ads.AdView
    android:id="@+id/adMob1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    ads:adSize="BANNER"
    ads:adUnitId="{AdID}" />

在我正在调用的 onCreate() 方法中的 MyActivity 中:

    boolean showAdds = true;
    if(this.showAdds) {
        AdView adView = (AdView) findViewById(R.id.adMob1);
        adView.loadAd(new AdRequest());
    }

在一些较旧的 Android 设备上(例如在三星 Galaxy S1 上测试过),在 AdMob 实施后,该应用非常缓慢。但是当我将“showAdds”变量设置为“false”时 -> MyActivity 的加载要好得多。

有没有可能让admob的应用程序更快?

感谢所有cmets。

【问题讨论】:

    标签: android admob


    【解决方案1】:

    我也一直在为 AdView 增加应用加载时间而苦苦挣扎。我的解决方案是将广告代码移动到延迟处理程序中(在 onCreate 内)……

    final Handler handler = new Handler();
    handler.postDelayed(new Runnable() {
      @Override
      public void run() {
         AdRequest adRequest = new AdRequest.Builder().build();
         adView.loadAd(adRequest);
         adView.bringToFront();
      }
    }, 5000);
    

    所以现在应用程序快速启动,然后在 5 秒后加载广告视图。 (使用 .bringToFront 是因为我的应用布局混合使用了 XML 和代码,所以这会阻止 adView 被隐藏)

    【讨论】:

      【解决方案2】:

      adView 在首次启动时在内部加载一个 webview。它需要创建 cookie 存储等。这将花费最多 2 秒。如果您在 adView 之前加载 webview,它将从中受益(可能在您的启动屏幕上)。

      我在这里找到了这个提示: https://groups.google.com/forum/#!topic/google-admob-ads-sdk/LdUVIZ2AW6M

      【讨论】:

        【解决方案3】:

        要提高性能,请在广告的 XML 实现中使用 ads:loadAdOnCreate="true"(这样您就不需要调用该 java 代码,一切都将通过 XML 完成)

        否则,您可以删除布尔显示添加。也许这会导致减速。

        我已经实现了没有此 showadds 代码的代码,它们在显示快速 adview 的低端设备上运行良好。

        更多信息Here

        【讨论】:

          【解决方案4】:

          将您的 adView 初始化移动到后台线程中。

           onCreate(){
                 //..some other stuff
          
                 Runnable runnableAdView = new Runnable() {
                    @Override
                    public void run() {
                        initAdView();
                    }
                  };
                 new Thread(runnableAdView).start();
           }
          
            private void initAdView() {
          
              // Create the adView
              adView = new AdView(this, AdSize.BANNER, getResources().getString(
                      R.string.admob_id));
          
              // Lookup your LinearLayout assuming its been given
          
              LinearLayout layout = (LinearLayout) findViewById(R.id.sound_share_screen_ad_container);
          
              // Add the adView to it
              layout.addView(adView);
          
              // Initiate a generic request to load it with an ad
              AdRequest adRequest = new AdRequest();
              //adRequest.addTestDevice(AdRequest.TEST_EMULATOR);
              //...
          
              adView.loadAd(adRequest);
          }
          

          【讨论】:

          • 这与新的基于 Play 服务的广告一起崩溃,它们必须在 UI 线程上运行。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-12-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多