我正在使用 AspectJ 来检测 Android 活动的生命周期。基本上,在方法执行之前,我有切入点onCreate(Bundle)
和onDestroy()
建议。
所以基本上,我计算了我有多少活动引用,比如注册表。所以如果onCreate(Bundle)
被调用,我基本上都会做count++。如果onDestroy()
被称为我确实数--。因此,如果我的计数变为 0,则在我的情况下,没有任何活动可以被视为应用程序关闭事件。
现在我正在使用一个计时器(已经尝试过 java.util.timer 和 android.os.Handler),它推迟了一个方法的执行来关闭我的系统。但是,在某些情况下,计时器启动但从不执行该方法。看起来Android只是杀死了整个过程。我是否使用守护线程也没关系。没有崩溃,没有例外,整个事情只是停在一个方法的中间。我在调试应用程序时也遇到了这种行为。所以我刚刚到达一个断点并繁荣,这个过程就消失了。
有趣的是,我也尝试不使用计时器,直接在我的方法前后放置一条 LogCat 消息。没有计时器,没有单独的线程或其他任何东西。尽管我可以确认调用了该方法,但有时甚至不会打印第一条 logcat 消息。似乎该应用程序只是停止而没有任何东西。我实际上是一个非常有经验的程序员,所以我现在了解生命周期是如何工作的,AspectJ 是如何工作的,以及如何正确应用多线程。但这让我很困惑!
也许有人可以帮助我!