BroadcastReceiver onReceive超时

时间:2011-01-10 18:18:14

标签: android timeout broadcastreceiver

我延伸BroadcastReceiver,并在onReceive()我做我需要做的任何事情。

onReceive()超时,来自文档:

  

超时为10秒   系统允许在考虑之前   要被阻挡的接收器和   被杀的候选人

当我处于调试模式时,这会产生问题。我需要超过10秒(有时)。如果我在10秒内没有完成所有调试,我的连接将关闭,调试将停止。

我是否可以增加超时或禁用它以进行调试?

感谢。

2 个答案:

答案 0 :(得分:11)

为了防止您的应用在调试期间在断点处暂停时强行关闭,请尝试安装开发工具应用并启用调试应用设置:

  

允许您选择要应用的应用程序   调试。您无需将其设置为   附加调试器,但设置此   价值有两个影响:

     
      
  • 如果你暂停,它会阻止Android抛出错误   断点很长一段时间   调试。
  •   

所有细节都在这里:http://developer.android.com/tools/debugging/debugging-devtools.html

如果您在onReceive方法中执行了一些复杂操作,请考虑让BroadcastReceiver开始Service并传递onReceive内的数据。 Service可以进行更长时间的处理。

答案 1 :(得分:1)

即使在调试模式下,我也遇到了这个问题。事实证明,另一个广播正在发送并且没有被处理,因为我正在主线程上调试另一个广播。 Android认为我的进程是在ANR中并且杀死了整个过程。

我不得不暂时修改代码,以便在进行调试时不调用其他广播。