Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何调试onDestroy(),Android系统在调试器中暂停时关闭应用程序_Android_Debugging - Fatal编程技术网

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

如何调试onDestroy(),Android系统在调试器中暂停时关闭应用程序,android,debugging,Android,Debugging,我正试图分析一个bug,当点击后退按钮后调用活动的onDestroy()方法时会出现这个bug。我在有问题的代码中设置了断点(使用Eclipse)。调试器会在断点处暂停应用程序,但Android系统也会将应用程序从屏幕上取下并返回到手机的主屏幕。应用程序暂停约10秒后,由于调试器突然断开连接,应用程序的线程似乎被Android系统破坏 关于如何阻止Android系统这样做有什么想法吗?我需要让应用程序保持活动状态,以便我可以进入调试器,查看变量等 手机正在运行Android 2.3.5。您可以在

我正试图分析一个bug,当点击后退按钮后调用活动的onDestroy()方法时会出现这个bug。我在有问题的代码中设置了断点(使用Eclipse)。调试器会在断点处暂停应用程序,但Android系统也会将应用程序从屏幕上取下并返回到手机的主屏幕。应用程序暂停约10秒后,由于调试器突然断开连接,应用程序的线程似乎被Android系统破坏

关于如何阻止Android系统这样做有什么想法吗?我需要让应用程序保持活动状态,以便我可以进入调试器,查看变量等


手机正在运行Android 2.3.5。

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

Android不会让您在
onDestroy
中逗留,它会超时,因此请尝试更快地完成关机。
onDestroy()
仅用于释放资源,并不总是在终止前调用;数据应保存在
onPause()
onStop()
中。

补充:其他选项包括使用后台服务完成一些工作,或者手动处理后退按钮以给自己更多的时间,但这可能会对用户体验产生负面影响


从我的手机发送过来的,请让我的大拇指放松一下。

我发现的一个解决办法是将
startActivity()
调用放入
ondestory()
(在
super.ondestory()之前)
)这会启动活动的虚拟实例,只是为了让应用保持活动状态。Android系统不会垃圾收集应用程序线程,因为其中仍有一个活动(新的虚拟活动)在运行。这反过来又允许您调试东西,因为调试器与线程的连接不会丢失


如果手机弹出一个对话框,说明应用程序没有响应(强制关闭或等待),不要单击“等待”,别管它。似乎单击“等待”导致应用程序线程被终止,并为虚拟活动创建了一个新线程。

不是您要寻找的答案,而是android.util.login如果您在onDestroy中做了足够多的工作,需要调试器,那么这已经是一个问题。在大多数移动框架上,系统都会出现问题我会在一段时间后关闭应用程序,不管它是否完成清理。我怀疑你是否可以在股票系统上禁用它。只需按照建议使用Log和logcat。不,这是最好的帮助。onDestroy不应该做任何资源密集型的事情。如果它做的不仅仅是释放资源,那么你的体系结构是错误的。如果你需要一个调试器来解决问题空指针问题当您有一个崩溃行号时,您需要提高调试技能。调试器适用于具有大量移动部件的复杂问题,若您针对每个问题使用调试器,您将永远无法学会如何批判性思考或调试复杂问题。更不用说,仅添加3或4条日志语句就相当于magnitude比这里来得快。@Gabetechan,我在Stackoverflow上发布了一些东西,这样其他面临同样问题的人就会找到解决方案。另外,您是否意识到这是一个bug,而不是架构决定,onDestroy()中发生了这么多事情。错误在于,一个关闭的网络连接触发了观察器启动,触发了应用程序运行中的其他代码。只需在onPause()中注销观察器。并没有真正回答问题。他问他如何延长调试时间……调试器正试图在onDestroy中暂停应用程序,但afaik Android将简单地停止该过程。将所有内容从onDestroy移动到onPause有点困难,但应能可靠地工作。