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.

  • Obtener (real) proceso de primer plano mediante activityManager.getRunningAppProcesses ()
  • Exploración de subred de Android
  • Acceso denegado (0x80004005) en Process.Start () en la aplicación android
  • Android proceso sigue vivo después de terminar las actividades
  • El método android finish () no borra la aplicación de la memoria
  • Obtener el PID de un proceso para matarlo, sin saber su nombre completo
  • Cuando su BroadcastReceiver se invoca a través de un Intent, ¿en qué proceso se ejecuta?
  • ¿Va a correr un servicio Android en un proceso diferente, contribuir al mismo límite de montón?
  • Cómo matar a mi propia actividad - la manera dura
  • Android runtime.getruntime (). Exec () obtener id de proceso
  • ¿Las aplicaciones que utilizan varios procesos comparten una instancia de Dalvik?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.