AdMob导致显示片段的延迟

时间:2015-09-06 19:32:29

标签: android admob

我的应用正在使用导航抽屉。点击抽屉中的项目后,它将显示一个片段。我将AdMob代码放在片段中,如下所示:

public class MenuIncome extends Fragment {

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        final View rootView = inflater.inflate(R.layout.menu_income, container, false);
        AdView mAdView = (AdView) rootView.findViewById(R.id.adView);
        AdRequest adRequest = new AdRequest.Builder().build();
        mAdView.loadAd(adRequest);
        mAdView.destroy();

        return rootView;
    }
}

在我放入AdMob代码之前,点击导航抽屉上的项目后,我的片段会立即显示。但是在我放入AdMob代码后,当我点击抽屉上的某个项目时,有时我的应用程序会被冻结最多1秒钟,然后只显示片段(带广告)。

为什么会这样?我认为AdView已经异步加载其广告。

2 个答案:

答案 0 :(得分:3)

loadAd(..)的第一次调用需要一些时间来初始化admob,这会在加载时冻结你的片段。 您可以延迟初始化,直到片段已加载并可见:

             mAdView.postDelayed(
                     new Runnable() {
                         @Override
                         public void run() {
                             mAdView.loadAd(adRequest);
                         }
                     }, 500
             );

答案 1 :(得分:0)

您是否尝试将AdView放置在托管Activity的父Fragment中?

以下设置是我在我的应用程序中使用广告的方式,该广告还使用导航抽屉和多个片段。在加载片段时没有任何延迟。实际上,根据具体情况,片段有时会在广告之前加载。

MainActivity.java

public class MainActivity extends ActionBarActivity {

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        AdView mAdView = (AdView) findViewById(R.id.adView);
        AdRequest adRequest = new AdRequest.Builder().build();
        mAdView.loadAd(adRequest);
    }

}

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    ...>

    ...

    <com.google.android.gms.ads.AdView
        android:id="@+id/adView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_alignParentBottom="true"
        ads:adSize="BANNER"
        ads:adUnitId="@string/banner_ad_unit_id">
    </com.google.android.gms.ads.AdView>

</RelativeLayout>