2016-03-05 139 views
0

我有一个问题: 我试图加载在一个的AsyncTask AdMob的横幅,但显示错误负载AdMob的横幅

Method loadAd must be called from the UI thread

首先我的onCreate方法初始化的AdView我的MainActivity这样的:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

     mAdTop = new AdView(this); 
     mAdTop.setAdSize(AdSize.BANNER); 
     mAdTop.setAdUnitId("ca-app-pub-3940256099942544/6300978111"); 
     adRequest = new AdRequest.Builder() 
       .addTestDevice("0637136C85DF244080C2A344FA8F51C8") 
       .addTestDevice(AdRequest.DEVICE_ID_EMULATOR) 
       .build(); 
} 

然后我叫的AsyncTask与loadAd方法:

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     ... 

     AdMobTask adMobTask = new AdMobTask(); 
     adMobTask.execute(mAdTop, adRequest); 
} 

private class AdMobTask extends AsyncTask<Object, Object, Object> { 

    @Override 
    protected Object doInBackground(Object... args) { 

     AdView adView = (AdView) args[0]; 
     AdRequest requester = (AdRequest) args[1]; 

     adView.loadAd(requester); 
     return null; 
    } 
} 

但即使我使用args参数它显示错误。

如何正确实现AsyncTask中的loadAd方法?

回答

2

不要在异步任务中执行此操作。 loadAd已经是异步的;只需从onCreate方法调用loadAd()即可。

documentation

公共无效loadAd(在AdRequest在AdRequest) 开始加载在后台线程上的广告。

+0

哦谢谢!!!这使一切方式更容易:) –