簡體   English   中英

在AsyncTask中加載AdMob橫幅

[英]Load AdMob banner in AsyncTask

我有一個問題:我試圖在AsyncTask中加載AdMob橫幅,但顯示錯誤

Method loadAd must be called from the UI thread

首先,我在MainActivity的onCreate方法中初始化了AdView,如下所示:

@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();
}

然后我使用loadAd方法調用AsyncTask:

@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方法?

不要在異步任務中執行此操作。 loadAd已經是異步的; 只需從onCreate方法調用loadAd()即可。

文檔

public void loadAd(AdRequest adRequest)開始在后台線程上加載廣告。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM