Ich möchte meine Add auf einem Hintergrund Thread laden, weil es die SlidingMenu
laggy beim Öffnen und Schließen macht. Sollte ich eine Thread
/Handler
verwenden? Oder AsyncTask
?Loading Ad (adMob) auf Hintergrund Thread
Antwort
Ich glaube nicht, dass dies getan werden kann, da alle UI verwandten Sachen auf dem Hauptthread getan werden müssen. Die API hat wahrscheinlich bereits einen Thread, um die Anzeige im Netzwerk zu erhalten. Wenn es würde nur knapp sein Ziel android eine NetworkOnMainThreadException
werfen, wenn eine netzwerkbezogene Sachen auf dem Haupt-Thread ausgeführt wird
vereinbart, ich dachte, irgendwie könnten wir den Netzwerkbetrieb und UI-Betrieb trennen, aber ich habe mich geirrt. Sie tun beide in Einzel-API-Anruf. –
Dies kann durch runOnUiThread
Aufruf dieser von onCreate()
Thread adThread = new Thread()
{
@Override
public void run()
{
loadAd();
}
};
adThread.start();
loadAd()
Methode
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);
}
});
}
Das funktioniert, aber ich bin mir nicht sicher, ob es tatsächlich das Problem löst. Da es auf der Benutzeroberfläche ausgeführt wird, verursacht es weiterhin andere Benutzeroberflächenelemente zu verzögern. – lenooh
Nur ein Hinweis für jeden, der dies googelt: Ich fing an, Fehler zu erhalten 'Ausführen von Stop der Aktivität, die nicht fortgesetzt wird: {
Es wird sowieso auf Hintergrund-Thread ausgeführt, da die AdMob die Anzeigen vom Google-Server aktualisieren muss. Es ist nur ein kleiner Tweak. – zackygaurav
Sie sollten die Methode MobileAds.initialize() vor dem Laden von Anzeigen verwenden. Danach funktioniert loadAd schneller
Es ist besser, die relevanten Informationen aus dem Link in Ihrer Antwort zu setzen, so dass die Antwort immer noch nützlich ist, wenn die Verbindung eines Tages bricht. – MackM
- 1. DrawerLayout mit Admob ad
- 2. Swift AdMob ad falsche Größe
- 3. drawViewHierarchyInRect auf Hintergrund thread
- 4. AdMob Interstitial Ad wird nie "fertig"
- 5. AdMob benutzerdefinierte Ereignisse für AD Mediation auf iOS (Swift)
- 6. Process Observable auf Hintergrund Thread
- 7. C# einfachen Hintergrund Thread
- 8. Blackberry Hintergrund Hörer Thread
- 9. Taskfortsetzung auf UI-Thread, wenn vom Hintergrund Thread gestartet
- 10. Wpf Toolkit AutoCompleteBox Suche auf Hintergrund Thread
- 11. Eine Ansicht auf einen Hintergrund Thread laden
- 12. neues System.Transactions.TransactionScope() auf Hintergrund Thread stoppt Programm
- 13. Thread im Hintergrund C#
- 14. Hintergrund Thread Tomcat Struts2
- 15. Verwirrt über die Unterschiede von AdMob, Ad Exchange und DFP
- 16. AdMob, Google Mobile Ad, Wechsel von iAd, bannerView
- 17. Qt: Hintergrund Thread Aktualisierung UI-Thread
- 18. AdMob Interstitial und Fehler isLoaded muss auf dem Haupt-UI-Thread
- 19. Funktion nicht im Hintergrund Thread
- 20. IIS Hintergrund Thread und SignalR
- 21. Vaadin Formularvalidierung im Hintergrund Thread?
- 22. Delphi: TWebBrowser im Hintergrund-Thread
- 23. Android: PHP im Hintergrund Thread
- 24. ios schreiben auf Hintergrund-Thread auf die Festplatte
- 25. Hintergrund Thread in einem UITableViewCell
- 26. Aufruf performSelectorInBackground: von Hintergrund thread
- 27. Trap Ausnahme von Hintergrund Thread
- 28. Erzwingen Admob auf Android
- 29. Testing AdMob auf iOS
- 30. AdMob Bannergrößen auf Android
Ich glaube nicht, dass dies getan werden kann, da alle UI verwandten Sachen auf dem Hauptthread getan werden müssen – tyczj
aber gibt es nicht einen Teil davon, der über das Netzwerk holt? – KickingLettuce
ja es gibt was in der API wahrscheinlich in einem separaten Thread getan wird, weil Android eine "NetworkOnMainThreadException" werfen wird, wenn Netzwerk-bezogene Sachen auf dem Haupt-Thread – tyczj