2012-07-06 93 views
1

我可以使用AsyncTask加載admob廣告嗎?Admob不能與AsyncTask合作

我都嘗試過,但我得到很多的警告,在運行時和廣告未加載

的警告,當我創建新的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

我只是按照示例,並在UI線程中添加adview,而不是把它放在一個AsyncTask。 – 2012-07-06 05:08:50

+0

@MorrisonChang我做到了這一點,但後來我看到了一些滯後,然後我在我的問題中提到的帖子顯示了哪些建議在AsyncTask上完成 – Ahmed 2012-07-06 05:22:06

回答

1

分離出需要在UI線程上完成的創建AdView所需的時間以及與廣告服務器進行通信並投放廣告所需的時間。 '阻止'或'滯後'可能是廣告SDK試圖讓廣告展示給您的主題。因爲它必須通過互聯網來完成,所以廣告出現需要時間。我真的不認爲AdMob會在試圖獲取廣告時屏蔽UI線程,但是當您看到屏幕上顯示的所有UI widget項目(按鈕,文本框,圖像等)之間會有明顯的延遲您的活動和廣告何時出現。

3

問題是您使用doInBackground方法中的視圖不在UI線程中。只需要在UI線程中調用的AsyncTaskonPostExecute(調用後doInBackground)或onPreExecute(調用前doInBackground)方法中查看您的視圖。

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/