Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在AsyncTask中加载AdMob横幅_Java_Android_Android Asynctask - Fatal编程技术网

Java 在AsyncTask中加载AdMob横幅

Java 在AsyncTask中加载AdMob横幅,java,android,android-asynctask,Java,Android,Android Asynctask,我有个问题: 我试图在AsyncTask中加载AdMob横幅,但显示错误 必须从UI线程调用方法loadAd 首先,我在MainActivity的onCreate方法中初始化了AdView,如下所示: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mAdTop = new AdView(this); mA

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

必须从UI线程调用方法loadAd

首先,我在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;
    }
}
@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
...
AdMobTask AdMobTask=新的AdMobTask();
adMobTask.execute(mAdTop,adRequest);
}
私有类AdMobTask扩展异步任务{
@凌驾
受保护对象doInBackground(对象…args){
AdView AdView=(AdView)参数[0];
AdRequest请求程序=(AdRequest)参数[1];
adView.loadAd(请求者);
返回null;
}
}
但即使我使用了args参数,它也显示了错误


如何在异步任务中正确实现loadAd方法?

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

从:

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