我想在后台线程上加载我的add,因为它在打开和关闭时会导致SlidingMenu
滞后。我应该使用Thread
/ Handler
吗?还是AsyncTask
?
String MY_AD_UNIT_ID = "----";
AdView adView = new AdView(getActivity(), AdSize.BANNER, MY_AD_UNIT_ID);
final LinearLayout adLayout = (LinearLayout) getActivity()
.findViewById(R.id.adLayout);
adLayout.addView(adView);
adView.loadAd(new AdRequest());
答案 0 :(得分:10)
这可以通过runOnUiThread
从onCreate()
Thread adThread = new Thread()
{
@Override
public void run()
{
loadAd();
}
};
adThread.start();
loadAd()
方法
private void loadAd()
{
// Banner Ad
final AdView adview = (AdView) this.findViewById(R.id.adview);
// Request for ads
final AdRequest adRequest = new AdRequest.Builder()
// Time for test devices
.addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
.addTestDevice("xxxxxxxxxxxxxxxxxxxxxxx")
.addTestDevice("xxxxxxxxxxxxx")
.build();
// Load Ads on UI Thread
runOnUiThread(new Runnable()
{
@Override
public void run()
{
adview.loadAd(adRequest);
}
});
}
答案 1 :(得分:4)
在加载广告之前,您应该使用MobileAds.initialize()方法。之后loadAd工作得更快
答案 2 :(得分:3)
我不相信这可以做到,因为所有UI相关的东西都必须在主线程上完成。 API可能已经有一个线程来获取网络上的广告。如果它没有android会抛出NetworkOnMainThreadException
如果在主线程上完成任何网络相关的东西