Android Activity onDestroy()并不总是被调用,如果仅被调用的部分代码被执行

onDestroy()并不总是被调用。 如果调用,只有部分代码被执行。
而大部分时间在LogCat中我只能看到消息“gps state on destroy called first”。 这是为什么?

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

Solutions Collecting From Web of "Android Activity onDestroy()并不总是被调用,如果仅被调用的部分代码被执行"

看看这个:

活动OnDestroy从来没有打电话?

和这个:

http://developer.android.com/reference/android/app/Activity.html#onDestroy%28%29

基本上,从来没有保证会调用onDestroy() ,在某些情况下,像你的应用程序这样的进程将被直接杀死,无论如何绕过方法调用。

在这里的Android开发者文档中,你可以看到 –

对于被标记为可拆分的方法,在该方法返回之后,托pipe该活动的进程可能随时被系统杀死而没有执行另一行代码。 因此,您应该使用onPause()方法将任何持久性数据(如用户编辑)写入存储。

并且onStop()和onDestroy()都被标记为killable。

这可能是因为只有一部分写在onDestroy()中的代码被调用,因为在执行onStop()之后,进程可以在任何时候被销毁。

@ Chris的答案是正确的,但是只有部分代码被调用的问题可能来自调用super.onDestroy()之前调用您的代码。 super.onDestroy()应该在最后被调用,因为这样你的代码在被销毁之前被调用。