Admob没有使用AsyncTask

时间:2012-07-06 05:04:21

标签: android admob

我可以使用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

那么我想知道的是,是否可以在后台加载广告。?

3 个答案:

答案 0 :(得分:3)

问题是您使用的doInBackground方法中的视图不在UI主题中。只需在onPostExecutedoInBackground之后调用)或onPreExecutedoInBackground之前调用)AsyncTaskUI中调用的{{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/