1

AsyncTaskを使用してAdMob広告を読み込むことはできますか?

試しましたが、実行時に多くの警告が表示され、広告が読み込まれません

新しいAdViewインスタンスを作成するときの警告の1つは

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のブロックを防ぐために行う唯一の理由です。

編集。

問題をきちんと表現できなかったのかもしれませんが、

数秒間ブロックされているように見えるため、バックグラウンドで広告を読み込もうとしています。アクティビティのインターフェースをブロックしたくありません。

この投稿を読むAdmobがUIスレッドをブロックしないようにする方法UIブロックを回避するために、AsyncTaskを使用することが推奨されています

だから私が知りたいのは、バックグラウンドで広告をロードする代わりになるかどうかです。

4

3 に答える 3

3

問題は、スレッドdoInBackgroundにないメソッドでビューを使用することです。スレッドで呼び出される ( after と呼ばれる) または( before と呼ばれる) メソッドでUIビューを処理するだけです。onPostExecutedoInBackgroundonPreExecutedoInBackgroundAsyncTaskUI

于 2012-07-06T05:12:02.670 に答える
1

UI スレッドで実行する必要がある AdView の作成に必要な時間と、広告サーバーと通信して広告を配信するのにかかる時間を分離します。「ブロック」または「ラグ」はおそらく、広告を表示しようとしている Ad SDK のスレッドです。これはインターネット経由で行う必要があるため、広告が表示されるまでに時間がかかります。AdMob が広告を取得しようとしているときに UI スレッドをブロックするとは思いませんが、すべての UI ウィジェット アイテム (ボタン、テキスト フィールド、画像など) が画面に表示されるまでに目に見える遅延が発生します。あなたのアクティビティと広告がいつ表示されるか。

于 2012-07-06T05:40:16.780 に答える