2016-07-11 9 views
0

Ich habe ein Problem mit Admob verursacht eine hohe Verzögerung, wenn die Anzeige geladen wird. Ich habe Admob für Android und iOS eingerichtet, und das Problem tritt nur bei Android. Sogar läuft auf älteren iPhones, gibt es wenig bis keine Verzögerung, während High-End-Android-Telefone (Nexus 6p und LG g4) Lag haben. Ich verwende das Framework von Xamarin Studio und Monogame, um meine Apps zu erstellen. Ich habe auch versucht, die Anzeige separat einzufädeln.Admob Lag nur auf Android

Ich habe überall nach einer Antwort gesucht, und ich weiß, ich habe etwas über die Android-Heap-Limit/Größe gefunden? Könnte das ein Problem sein? Manchmal hinkt mein Spiel sogar, wenn es die Anzeige nicht erhält, aber ich glaube, dass die Animation der Anzeige ein Problem sein kann. Vielen Dank im Voraus für alle Hilfe!

Hier ist mein Code:

protected override void OnCreate(Bundle bundle) 
    { 
     base.OnCreate(bundle); 

     // Create our OpenGL view, and display it 

     // !IMPORTANT! 
     var g = new Game1(); 
     //SetContentView((View)g.Services.GetService(typeof(View))); 


     //createAds((View)g.Services.GetService(typeof(View))); 
     createAds(g.Services.GetService<View>()); 

     // !IMPORTANT! 
     g.Run(); 


    } 

    private void createAds(View window) 
    { 
     var frameLayout = new FrameLayout(this); 
     var linearLayout = new LinearLayout(this); 

     frameLayout.AddView(window); 


     adView = new AdView(this); 
     adView.AdUnitId = AD_UNIT_ID; 
     adView.AdSize = AdSize.SmartBanner; 
     adView.SetBackgroundColor(Android.Graphics.Color.Transparent); 


     linearLayout.AddView(adView); 
     frameLayout.AddView(linearLayout); 
     SetContentView(frameLayout); 



     var myThread = new Thread(new ThreadStart(() => 
     { 
      var requestbuilder = new AdRequest.Builder(); 
      RunOnUiThread(() => 
      { 
       adView.LoadAd(requestbuilder.Build()); 
      }); 
     })); 

     myThread.Priority = (System.Threading.ThreadPriority)(Android.OS.ThreadPriority)(-20); 

     myThread.Start(); 

    } 
+0

Keine Notwendigkeit, "adView.LoadAd" auf einem separaten Thread zu laufen. admob macht das schon für dich. Siehe [hier] (https://developers.google.com/android/reference/com/google/android/gms/ads/AdView.html#loadAd (com.google.android.gms.ads.AdRequest)) – rpattabi

Antwort

0

Eine mögliche Lösung kann in der Pause Bildschirm nur die Verwendung von Interstitial-Anzeigen oder wenn der Spieler beendete eine Ebene (zum Beispiel). Das Banner sollte keine Verzögerung oder ein Problem verursachen. Vielleicht können Sie versuchen, die Anzeige vor dem Start des Spiels (z. B. auf einem Ladebildschirm) zu laden und danach zu zeigen. Hier ist meine Vorlage mit Interstitial-Anzeigen und Banner-Anzeigen enthalten. Jede Zeile ist gut kommentiert, so dass es veri einfach zu verstehen ist: https://github.com/Odle98/MonogameAndroid-BaseApp-Ads Das Projekt ist fertig kompiliert zu werden, alles wird altrady hinzugefügt.

Ich hoffe, es könnte nützlich sein :)