【问题标题】:Load AdMob banner in AsyncTask在 AsyncTask 中加载 AdMob 横幅
【发布时间】:2016-03-05 19:00:16
【问题描述】:

我有一个问题: 我尝试在 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 方法?

【问题讨论】:

    标签: java android android-asynctask


    【解决方案1】:

    不要在异步任务中这样做。 loadAd 已经是异步的;只需从您的 onCreate 方法调用 loadAd()。

    来自documentation

    public void loadAd (AdRequest adRequest) 开始在后台线程上加载广告。

    【讨论】:

      猜你喜欢
      • 2019-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多