Admob en múltiples actividades?

Tengo 7 actividades en mi aplicación. Quiero mostrar admob en cada actividad

¿Tengo que crear cada AdView en cada actividad?

o

¿Hay alguna alternativa para reutilizar el contenedor de actividad anterior O impedir que se destruya así que puedo usar en la próxima actividad ….

Cualquier código o pista que apreciaremos.

Gracias

Hice esto. Gracias a yorkw comentario. Esto no es un código eficiente. Pero se puede modificar en consecuencia. Eso reduce el código para cada actividad .

Simplemente extiende "TestingAdmobActivity" y llama a SetupAds () para llamar a tus advs.

Mi SuperClase "TestingAdmobActivity.java"

package com.test.myadmob; import com.google.ads.Ad; import com.google.ads.AdListener; import com.google.ads.AdRequest; import com.google.ads.AdRequest.ErrorCode; import com.google.ads.AdSize; import com.google.ads.AdView; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.util.Log; import android.view.View; import android.view.ViewGroup.LayoutParams; import android.widget.LinearLayout; public class TestingAdmobActivity extends Activity implements AdListener{ public AdView adView; public String ADV_PUB_ID = "a14e2fb60918999"; private boolean adVisible = true; LinearLayout layout; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.i("Admob", "Calling External"); } public void SetupAds(){ Log.i("AdMob", "Start Setup"); layout = new LinearLayout(this); layout.setOrientation(LinearLayout.VERTICAL); layout.setGravity(android.view.Gravity.BOTTOM | android.view.Gravity.CENTER_HORIZONTAL); //To put AdMob Adv to Bottom of Screen Log.i("AdMob", "End Layout Setup"); addContentView(layout, new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT)); adView = new AdView(this, AdSize.BANNER, ADV_PUB_ID); adView.setAdListener(this); Log.i("AdMob", "Init complete Adview"); layout.addView(adView, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); Log.i("AdMob", "Done AddView Layout"); AdRequest request = new AdRequest(); request.addTestDevice(AdRequest.TEST_EMULATOR); request.addKeyword("LifeOK"); adView.loadAd(request); Log.i("AdMob", "End Setup"); } private Handler handler = new Handler() { public void handleMessage(Message msg) { switch (msg.what) { case 0: //Disable Adv if (adVisible) adVisible = false; break; case 1: //Enable Adv if (!adVisible) { Log.i("AdMob", "Case 1"); adVisible = true; } break; case 2: //Enable but Hide Adv adView.setVisibility(View.GONE); break; case 3: //Enable but Show Adv adView.setVisibility(View.VISIBLE); break; default: break; } } }; public void DisableAds() { Log.i("AdMob", "Request Disable Adv"); handler.sendEmptyMessage(0); } public void EnableAds() { Log.i("AdMob", "Request Enable Adv"); handler.sendEmptyMessage(1); } public void HideAdv() //Enable Adv but Hide { Log.i("AdMob", "Request Hide Adv"); handler.sendEmptyMessage(2); } public void ShowAdv() //Show Adv { Log.i("AdMob", "Request Show Adv"); handler.sendEmptyMessage(3); } @Override public void onDismissScreen(Ad arg0) { // TODO Auto-generated method stub Log.d("AdMob", "Dismiss Screen"); } @Override public void onFailedToReceiveAd(Ad arg0, ErrorCode arg1) { // TODO Auto-generated method stub Log.d("AdMob", "failed to receive ad (" + arg1 + ")"); } @Override public void onLeaveApplication(Ad arg0) { // TODO Auto-generated method stub Log.d("AdMob", "Leaving Application"); } @Override public void onPresentScreen(Ad arg0) { // TODO Auto-generated method stub Log.d("AdMob", "Present Screen"); } @Override public void onReceiveAd(Ad arg0) { // TODO Auto-generated method stub Log.d("AdMob", "Adv Received"); } } 

Mi FirstActivityClass "NewActivity_1.java"

 package com.test.myadmob; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; public class NewActivity_1 extends TestingAdmobActivity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Log.i("Admob", "OnCreate"); SetupAds(); Log.i("Admob", "Done"); Button button1 = (Button) findViewById(R.id.button1); button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Log.i("Admob", "Going to Activity 2"); Intent mainIntent = new Intent().setClass(NewActivity_1.this, NewActivity_2.class); startActivity(mainIntent); } }); } } 

Mi SecondActivityClass "NewActivity_2.java"

 package com.test.myadmob; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; public class NewActivity_2 extends TestingAdmobActivity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Log.i("Admob", "OnCreate"); SetupAds(); Log.i("Admob", "Done"); Button button1 = (Button) findViewById(R.id.button1); button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Log.i("Admob", "Going Back to Activity 1"); finish(); } }); } } 

Mi AndroidManifest.xml

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.test.myadmob" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="7" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:label="@string/app_name" android:name=".NewActivity_1" > <intent-filter > <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".TestingAdmobActivity" ></activity> <activity android:name=".NewActivity_2" ></activity> <activity android:name="com.google.ads.AdActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" > </activity> </application> <!-- AdMob SDK requires Internet permission --> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <!-- to get Android Device ID --> </manifest> 

Nota: por el bien de los permisos utilizados por google admob sdk, tengo que construir esto en android 4.0 sdk con min-sdk versión 7

En mi aplicación tengo un caché de 0..12 anuncios en un momento dado. Los estoy reutilizando a través de diferentes Fragmentos en un ViewPager sin fin. La clase de almacenamiento en caché se encarga de cargar el suministro de los anuncios a los fragmentos.

El truco es:

  1. Llamar a la onDestory de onDestory sólo cuando esté seguro de que ha terminado con esa instancia de AdView para siempre. Esto significa que los propios Fragmentos no están a cargo de esto.

  2. Pasando las propias AdView entre los fragmentos, debemos recordar separar cada AdView de su jerarquía:

(Sólo en el hilo de interfaz de usuario, por supuesto):

 public void detachFromHirerchy() { View adView = getAdView(); if ( adView != null ) { ViewGroup parent = (ViewGroup) adView.getParent(); if (parent != null) { parent.removeView( adView ); } } } 
  • Mediación de Admob - ID de editor y ID de mediación
  • Excepción de seguridad de Admob: denegación de permisos
  • Carpeta IDFA / GAID
  • ¿Utilizar un AdRequest de AdMob para múltiples AdViews?
  • Parece que no se puede visualizar un ListView y un AdView al mismo tiempo
  • ¿Cómo puedo mostrar y ocultar los anuncios de banner de admob?
  • Android: PublisherInterstitialAd y DoubleClick for Publishers de Google Play Services
  • Adview (admob) con carga de datos asincrónica
  • ¿Cuál es el tamaño, en píxeles, de AdSize.BANNER?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.