如何调试onDestroy(),Android系统在调试器中暂停时杀死应用程序

时间:2012-12-20 19:46:14

标签: android debugging

我有一个错误,我试图分析在按下后退按钮后调用Activity的onDestroy()方法时发生的错误。我在有问题的代码中使用了断点(使用Eclipse)。调试器在断点处暂停应用程序,但Android系统也会将应用程序从屏幕上移开并返回到手机的主屏幕。应用程序暂停约10秒后,应用程序的线程似乎被Android系统破坏,因为调试器突然断开连接。

有关如何防止Android系统执行此操作的任何想法?我需要让应用程序保持活着,这样我就可以进入调试器,查看变量等等。

手机正在运行Android 2.3.5。

2 个答案:

答案 0 :(得分:4)

我找到的一种解决方法是将startActivity()调用onDestroy()super.onDestroy()之前)调用,以启动Activity的虚拟实例,只是为了让应用程序保持活动状态。 Android系统不会垃圾收集应用程序线程,因为它内部仍然有一个Activity(新的虚拟活动)。这反过来允许您调试,因为调试器与线程的连接不会丢失。

如果手机弹出一个说明应用没有响应的对话框(强制关闭或等待),请不要单击等待,只需不管它。似乎单击Wait导致应用程序线程被杀死,并为虚拟Activity创建了一个新线程。

答案 1 :(得分:0)

您可以在super.onDestroy()上尝试断点,但我怀疑您会有同样的运气。 :(

Android不会让你留在onDestroy,它会超时,所以尝试更快地完成你的关机。 onDestroy()仅用于释放资源,并且在终止之前并不总是被调用;数据应保留在onPause()onStop()中。 https://developer.android.com/training/basics/activity-lifecycle/stopping.html

附录:其他选项包括为某些工作使用后台服务或手动处理后退按钮以给自己更多时间,但它可能会对用户体验产生负面影响。

http://www.stanford.edu/class/cs193a/03/

从我的手机发出,请把我的拇指放松一些。