我可以使用AsyncTask加载admob广告吗?
我已经尝试了但是我在运行时收到了很多警告并且没有加载广告
创建新AdView实例时的警告之一是
07-06 09:57:31.170: W/webview(1113): java.lang.Throwable: Warning: A WebView method was called on thread 'AsyncTask #1'. All WebView methods must be called on the UI thread. Future versions of WebView may not support use on other threads.
我的方法看起来像这样
@Override
protected AdView doInBackground(Activity... activityParam)
{
Looper.prepare();
activity = activityParam[0];
// Create the adView
AdView adView = new AdView(activity, AdSize.BANNER, "xxxxxxxxxxxxx");
return adView;
}
请告知是否应该在非UI线程上调用它,这是我这样做以防止UI阻塞的唯一原因..
编辑。
可能是我没有正确表达我的问题,
我正在尝试在后台加载广告,因为它似乎会阻止几秒钟, 我不想阻止我的活动界面。
阅读此帖How to avoid Admob blocking the UI thread,建议为避免UI阻塞,应使用AsyncTask
那么我想知道的是,是否可以在后台加载广告。?
答案 0 :(得分:3)
问题是您使用的doInBackground
方法中的视图不在UI
主题中。只需在onPostExecute
(doInBackground
之后调用)或onPreExecute
(doInBackground
之前调用)AsyncTask
中UI
中调用的{{1}}方法中查看您的视图1}}线程。
答案 1 :(得分:1)
分离创建需要在UI线程上完成的AdView所需的时间以及与广告服务器进行通信和投放广告所需的时间。 “阻止”或“滞后”可能是广告SDK尝试向您展示广告的主题。由于必须通过互联网进行此操作,因此广告需要一段时间才能显示。我真的不认为AdMob在尝试获取广告时会阻止UI线程,但是当您看到屏幕上显示的所有UI小部件项(按钮,文本字段,图像等)之间会有明显的延迟您的活动以及广告何时出现。
答案 2 :(得分:0)
只有在UI线程中处理代码时,才会显示Admob横幅广告和插页式广告。
根据您的性能需求,您可能需要查看以下帖子。它包含了一个很好的总结,为什么使用AsyncTask比直接创建自己的线程效率低: Android basics: running code in the UI thread
在以下链接中,您可以找到如何使用线程在30秒的周期性作业中使用插页式广告的教程:http://www.6020peaks.com/2015/01/how-to-use-admob-interstitials-from-a-non-ui-thread-in-android/