2016-03-05 103 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

哦謝謝!!!這使一切方式更容易:) –