reiniciar - Android Activity onDestroy() no siempre se llama y si se llama solo se ejecuta parte del código
programacion android pdf 2018 (3)
onDestroy () no siempre se llama. Si se llama, solo se ejecuta parte del código.
Y la mayoría de las veces en LogCat solo veo el mensaje "el estado de GPS en destruir se llama primero". ¿Porqué es eso?
protected void onDestroy(){
super.onDestroy();
Log.d("on destroy called", "gps state on destroy called first");
editor.putBoolean("gpsOn", false);
Log.d("on destroy called", "gps state on destroy called second");
editor.commit();
Log.d("on destroy called", "gps state on destroy called third");
stopRouteTracking();
Log.d("on destroy called", "gps state on destroy called fourth");
}
En la documentación del desarrollador de Android here , puedes ver que -
para aquellos métodos que están marcados como killables, después de que el método devuelve el proceso que aloja la actividad, el sistema puede cancelarlo en cualquier momento sin que se ejecute otra línea de su código. Debido a esto, debe usar el método onPause () para escribir cualquier dato persistente (como las ediciones del usuario) en el almacenamiento.
y onStop () y onDestroy () están marcados como killable.
Esta puede ser la razón por la que solo se está invocando parte del código escrito en onDestroy (), ya que el proceso se puede destruir en cualquier momento después de que se ejecute enStop ().
La respuesta de @ Chris es correcta, sin embargo, su problema donde solo se llama una parte de su código puede surgir de la llamada a super.onDestroy()
antes de llamar a su código. super.onDestroy()
debe llamar a super.onDestroy()
al final porque entonces se llamará a su código antes de que se destruya.
Mira esto:
Actividad OnDestroy nunca llamado?
Y esto:
http://developer.android.com/reference/android/app/Activity.html#onDestroy%28%29
Básicamente, nunca hay una garantía de que se onDestroy()
, y en algunos casos, procesos como su aplicación se eliminarán directamente, evitando la llamada al método de todos modos.