Android Activity onDestroy () no siempre se llama y, si se llama, solo se ejecuta parte del código

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");      





}

Respuestas a la pregunta(3)

Su respuesta a la pregunta