在断点处调试器时,防止小部件的“调度重启崩溃服务”

时间:2012-06-11 17:41:32

标签: android eclipse debugging android-widget breakpoints

我已经使用Android开发工具包(16.0.1)设置了Eclipse(3.7.2),包括Dalvik Debug Monitor Service(16.0.1),根据不同或多或少的官方教程的指示。

如果我使用启动器Activity编写“标准”Android应用程序,那么我可以在我的代码中设置断点,在虚拟Android设备上运行它,并且断点按预期中断,我可以度过整晚如果我想调试代码。

当问题出现时,我开始使用Android主屏幕小部件而不是“标准”Android应用程序,该小部件没有启动器Activity。如果我想调试我的代码,我仍然可以轻松设置断点。假设我在我的AppWidgetProvider实现的onUpdate中直接添加了断点,并通过向AVD添加我的小部件实例来测试它。断点不会破裂。我想,这是因为在调试配置中,我的小部件的启动操作是“什么都不做”,因为我没有可以选择的活动。

在Google上搜索,我发现当我的AVD运行时,我可以转到Eclipse中的DDMS视图,在其“设备”选项卡中,我可以选择我的小部件进程,然后单击一个可爱的绿色错误“调试所选进程” 。如果在那之后,我在AVD中创建了我的小部件的实例,那么执行确实在我的断点处中断。

但接下来是我的下一个问题:当发生这种情况时,我在调试器中有几秒钟,然后Android决定我的小部件进程已挂起(这是真的),并且应该被拍摄(这不是真的)!因此我的问题是:如何阻止系统在断点处停止拍摄我的进程?

注意:在日志中我收到了那种通知:

06-11 17:02:19.900: W/ActivityManager(59): Scheduling restart of crashed service [...]

1 个答案:

答案 0 :(得分:1)

从小部件接收器(IntentServcie)启动未在主线程(例如onUpdate())上运行的服务。在那里做你所有的工作。