Android, AdMob: la actualización del anuncio de AdMob destruye la velocidad de fotogramas
Estoy desarrollando un juego y está viniendo bastante bien. Tengo un poco de problema con la actualización del anuncio de AdMob. Cada vez que se actualiza el anuncio o dibuja un aspecto diferente del anuncio, mi velocidad de fotogramas se desploma y casi hace que el juego no pueda reproducirse. Esto es lo que tengo para la carga del anuncio …
ad = new AdView(this, AdSize.BANNER, "..."); AdRequest adRequest = new AdRequest(); adRequest.addTestDevice("..."); adRequest.addTestDevice("..."); RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams( RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); lp.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); lp.addRule(RelativeLayout.CENTER_HORIZONTAL); ad.setLayoutParams(lp); RelativeLayout layout = new RelativeLayout(this); layout.addView(renderView); layout.addView(ad); ad.loadAd(new AdRequest()); setContentView(layout);
Mi solución para convertir el anuncio en la parte superior de SurfaceView
era simplemente añadirlo a un RelativeLayout
y añadir tanto SurfaceView
y AdView
. Todo esto funciona bien, pero cada vez que se actualiza el anuncio (UI o nueva solicitud de anuncio), se descompone en el subproceso de la interfaz de usuario, lo que a su vez ralentiza mi subproceso de procesamiento.
- Error de AdMob (Error al inflar la clase com.google.ads.AdView)
- Aumente los ingresos de los ingresos de admob utilizando filtros
- Anuncio intersticial de Admob en el botón de clic
- Error al analizar xml: prefijo sin consolidar de com.google.android.gms.ads.AdView
- Servicio de anuncios AdBuddiz o AdMob
¿Hay una manera que puedo hacer todo este trabajo junto agradable para tener todo el trabajo hecho por el AdView hecho por separado del hilo principal? No estoy muy seguro acerca de la actualización dinámica de la distribución actual de otro hilo.
Gracias por la ayuda.
- Poner un anuncio nativo de AdMob en una listaVer
- Sigo recibiendo configChanges: Los tipos de cadenas no permiten el error. Incluso con la API de destino establecida en 13
- Error al inflacionar la clase com.google.android.gms.ads.AdView Android Studio
- ¿Cómo detener la carga de anuncios de Banner?
- Uses-sdk: minSdkVersion 7 no puede ser menor que la versión 9 declarada en la biblioteca
- Gestión de múltiples fuentes de anuncios (adMob + Leadbolt) en Android
- Hacer que los usuarios conecten anuncios en Android, ¿legal o no?
- ¿Cómo puedo usar un ajuste de TabHost que contenga un MapView que también muestre una vista de AdMob debajo de él?
También tuve este problema. Me pareció que fue causada por los anuncios de Google que se animan cuando cambian, en lugar de anuncios de banner estáticos Admob que no animan en absoluto. Hay un ajuste en la configuración de la aplicación de admob para controlar si se utilizan anuncios de Google … intente desactivarlo para ver si marca una diferencia.
Disculpas por resucitar esta pregunta, pero he podido encontrar el mismo problema y descubrí que convertir LAYER_TYPE_SOFTWARE
en el WebView
interno de WebView
hizo más suave.
He confirmado esto trabajando en mi lado con la versión 8.4.0 que funciona en el androide 5.1, aunque es posible que esta solución beneficie más dispositivos con CPU más fuertes.
En la actividad de OnResume tengo
/* * The AdView attaches it's internal WebView only once it * has been loaded, so we need to wait until that happens. */ adView.setAdListener(new AdListener() { @Override public void onAdLoaded() { runOnWebView(mAdView, new WebViewAction() { @Override public void run(WebView view) { // the most important part is here view.setLayerType(View.LAYER_TYPE_SOFTWARE, null); } }); } });
Con el método runOnWebView y la interfaz WebViewAction definida como
/** * Recursively searches for a WebView instance located in * the hierarchy of view and invokes the callback method on * action with the found instance. */ private void runOnWebView(View view, WebViewAction action) { if (view instanceof WebView) { action.run((WebView) view); return; } if (view instanceof ViewGroup) { final ViewGroup parent = (ViewGroup) view; for (int i = 0; i < parent.getChildCount(); i++) { runOnWebView(parent.getChildAt(i), action); } } } private interface WebViewAction { void run(WebView view); }
- Menú ActionBar de Android con elementos de texto verticales (rotados) basados en Proveedor de acciones personalizadas
- Horizontal LinearLayout en Anko