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:
- 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?
- Runtime.exec () error: se bloquea sin proporcionar un objeto de proceso
- ¿Cómo puede una aplicación de Android tener más de un proceso?
- Servicio de Android: proceso vs. no
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?
- Android BroadcastReceiver: ejecutarlo en el proceso por defecto o en uno nuevo?
- Android proceso asesino
- Android: mantener vivo un servicio de fondo (prevenir la muerte del proceso)
- Android runtime.getruntime (). Exec () obtener id de proceso
- Obtener el PID de un proceso para matarlo, sin saber su nombre completo
- Java.lang.Thread.setPriority vs android.os.Process.setThreadPriority
- ¿Por qué debo comenzar el servicio de urbanairship como un proceso separado?
- ¿Cómo ejecutar una aplicación Qt en segundo plano en Android?
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.
- Phonegap-facebook-plugin: sólo funciona cuando la aplicación FB nativa no está instalada (Android)
- Authorize Android Game – ¿Dónde está la app-id?