2013-06-25 17 views
5

オープニングとクローズ時に遅れてSlidingMenuが発生するため、バックグラウンドスレッドに追加したいと思います。 Thread/Handlerを使用する必要がありますか?またはAsyncTaskバックグラウンドスレッドに広告(adMob)を読み込んでいます

String MY_AD_UNIT_ID = "----"; 
AdView adView = new AdView(getActivity(), AdSize.BANNER, MY_AD_UNIT_ID); 
final LinearLayout adLayout = (LinearLayout) getActivity() 
      .findViewById(R.id.adLayout); 
adLayout.addView(adView); 
adView.loadAd(new AdRequest()); 
+0

これは、すべてのUI関連のものがメインスレッド – tyczj

+0

で実行されなければならないとは信じられませんが、ネットワーク上でフェッチする部分はありません。 – KickingLettuce

+1

はい、ネットワークに関連するものがメインスレッドで行われた場合、アンドロイドは 'NetworkOnMainThreadException'をスローしますので、おそらく別のスレッドでAPIで行われます。 – tyczj

答えて

2

私はこれがすべてのUI関連のものがメインスレッドで行われる必要があるとは思わない。 APIにはすでに、ネットワーク上の広告を取得するためのスレッドが存在している可能性があります。それはアンドロイドをdidntの場合は、任意のネットワーク関連のものがメインスレッド

+0

私は何とかネットワーク操作とUI操作を分けることができたと思っていましたが、私は間違っていました。彼らは単一API呼び出しで両方を行います。 –

9

に行われている場合、これはrunOnUiThread

onCreate()

から呼び出し、これをすることによってUIスレッド上で広告をロードすることによって達成することができ NetworkOnMainThreadExceptionをスローします
Thread adThread = new Thread() 
    { 
     @Override 
     public void run() 
     { 
      loadAd(); 
     } 
    }; 
    adThread.start(); 

loadAd()方法

private void loadAd() 
{ 
    // Banner Ad 
    final AdView adview = (AdView) this.findViewById(R.id.adview); 

    // Request for ads 
    final AdRequest adRequest = new AdRequest.Builder() 
      // Time for test devices 
      .addTestDevice(AdRequest.DEVICE_ID_EMULATOR) 
      .addTestDevice("xxxxxxxxxxxxxxxxxxxxxxx") 
      .addTestDevice("xxxxxxxxxxxxx") 
      .build(); 

    // Load Ads on UI Thread 
    runOnUiThread(new Runnable() 
    { 
     @Override 
     public void run() 
     { 
      adview.loadAd(adRequest); 
     } 
    }); 
} 
+0

これは動作しますが、問題の問題が実際に解決されているかどうかはわかりません。 UI上で実行されるため、他のUI要素も遅延します。 – lenooh

+0

これを検索している人のためのメモ:私は、エラーが発生し始めました。 '再開されないアクティビティの停止を実行する:{ /com.google.android.gms.ads.AdActivity} ... 'この。 – lenooh

+0

AdMobはGoogleのサーバーから広告を更新する必要があるため、これはバックグラウンドスレッドでも実行されます。それはほんの少しの微調整です。 – zackygaurav

3

広告を読み込む前にMobileAds.initialize()メソッドを使用する必要があります。その後、loadAdはより速く動作します。

+0

あなたの答えにリンクからの関連情報を入れて、いつかリンクが途切れると答えがまだ役立つようにする方が良いでしょう。 – MackM

関連する問題