La aplicación de Android no se cierra después de llamar a System.exit (0)

Tengo una aplicación de Android que funcionó bien, antes de añadir actividad de admob. Estoy cerrando mi aplicación con el proceso de matar (llamando a System.exit (0)). Sé que esta es la peor solución de terminar la aplicación. Estoy trabajando con los estados de OpenGL y el framefork de libgdx, así que no puedo fijar toda la filtración de la memoria que aparece cuando llamo la función androide estándar del final ().

Así que aquí está el problema:

Mi aplicación funciona normalmente varias veces. Cierro y empiezo una y otra vez. Todo funciona bien, pero de repente la vista de admob no aparece y cuando estoy tratando de cerrar, se congela. El sonido funciona, la última pantalla se muestra, pero tocar no funciona.

Cuando estoy matando el proceso por administrador de tareas, la música sigue jugando. Incluso cuando completamente eliminar la aplicación, la música sigue jugando, por lo que la actividad sigue funcionando. Se detiene sólo cuando reinicio mi teléfono.

Sin admob todo funciona bien. También intento destruir adView antes de cerrar, sin resultado.

Aquí está mi actividad principal:

public class ControllerActivity extends AndroidApplication{ private AdView adView; RelativeLayout layout; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); AndroidApplicationConfiguration cfg = new AndroidApplicationConfiguration(); cfg.useGL20 = true; cfg.useCompass = false; cfg.useAccelerometer = false; layout = new RelativeLayout(this); requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); View gameView = initializeForView(Controller.getInstance(), cfg); adView = new AdView(this, AdSize.BANNER, "MYID"); AdRequest adRequest=new AdRequest(); adView.loadAd(adRequest); layout.addView(gameView); RelativeLayout.LayoutParams adParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); adParams.addRule(RelativeLayout.ALIGN_PARENT_TOP); adParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); layout.addView(adView, adParams); setContentView(layout); } @Override public void onDestroy() { if (adView!=null) { adView.stopLoading(); adView.destroy(); } System.exit(0); super.onDestroy(); } } 

¿Tiene sus ideas, cómo matar por completo este proceso?

4 Solutions collect form web for “La aplicación de Android no se cierra después de llamar a System.exit (0)”

He descubierto algunos hechos. Si la aplicación se termina por System.exit(0) o por android.os.Process.killProcess la próxima vez que AdMob no muestre anuncios. Aún más si intenta terminar la aplicación se quedará bloqueado (el proceso permanecerá activo y la única opción para matar es el reinicio del dispositivo). La única solución es no utilizar System.exit(0) para salir de la aplicación. Cabe mencionar que no importa si se adView.destroy() o adView.stopLoading() .

He utilizado this.moveTaskToBack(true); En lugar de la terminación. Ocultará la aplicación y si en algún momento no se restaurará, Android liberará todos los recursos y AdMob funcionará correctamente. Si la aplicación será restaurada, continuará desde el mismo lugar.

He seguido las pruebas y parece que esto es un error en el AdMob SDK 6.4.1. He descargado 6.3.0 y este error ha desaparecido.

Yo suelo usar:

Android.os.Process.killProcess (android.os.Process.myPid ())

Para matar el proceso y todas las actividades que se iniciaron.

Esto es para una clase que extiende una Actividad. No estoy totalmente seguro si difiere de extender AndroidApplication

Refiera esto creo que va a funcionar.

  <com.google.ads.AdView android:id="@+id/adView" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" ads:adSize="SMART_BANNER" ads:adUnitId="@string/admobid" ads:loadAdOnCreate="true" ads:testDevices="TEST_EMULATOR, TEST_DEVICE_ID" android:background="@android:color/transparent" /> 

O

Puede llamar a adView.stopLoading() en la actividad destroy.

  • Android: mantener vivo un servicio de fondo (prevenir la muerte del proceso)
  • Exploración de subred de Android
  • Cada actividad en Android es un proceso o una aplicación es un proceso
  • ¿Cómo ejecutar una aplicación Qt en segundo plano en Android?
  • ¿Cómo matar una aplicación de terceros?
  • Android - ¿Cómo decidir si ejecutar un servicio en un proceso separado?
  • El método android finish () no borra la aplicación de la memoria
  • Ejecución de un comando de shell para copiar archivos de la aplicación Android
  • ¿Cuáles son los pros y los contras de usar múltiples procesos dentro de la aplicación Android
  • Acceso denegado (0x80004005) en Process.Start () en la aplicación android
  • Android: El proceso secundario (logcat) continúa ejecutándose después de que el proceso padre (aplicación) falleció
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.