onDestroy()
is not always called. If called, only part of the code is executed. And most of the time in LogCat I only see the message "gps state on destroy called first". Why is that?
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");
}
Take a look at this:
Activity OnDestroy never called?
And this:
http://developer.android.com/reference/android/app/Activity.html#onDestroy%28%29
Basically, there's never a guarantee that onDestroy()
will be called, and in some cases processes such as your app will be killed directly, bypassing the method call anyway.