我的应用正在使用导航抽屉。点击抽屉中的项目后,它将显示一个片段。我将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已经异步加载其广告。
答案 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>