studio reiniciar programacion para móviles libro edición desarrollo curso aplicaciones activity android ondestroy

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.