Home » Android » android – BroadcastReceiver onReceive timeout

android – BroadcastReceiver onReceive timeout

Posted by: admin June 15, 2020 Leave a comment

Questions:

I extend BroadcastReceiver, and in onReceive() I do whatever I need to do.

onReceive() has a timeout, from the documentation:

there is a timeout of 10 seconds that
the system allows before considering
the receiver to be blocked and a
candidate to be killed

This creates a problem when I am in debug mode. I need more than 10 seconds (sometimes). If I don’t do all my debugging in 10 seconds my connection is closed and debugging is stopped.

Can I increase the timeout or disable it for debugging purposes?

Thanks.

How to&Answers:

In order to prevent your app from force closing while you are paused on a break point during debugging, try installing the Dev Tools application and enable the Debug App setting which:

Lets you select the application to
debug. You do not need to set this to
attach a debugger, but setting this
value has two effects:

  • It will prevent Android from throwing an error if you pause on a
    breakpoint for a long time while
    debugging.

All of the details are here: http://developer.android.com/tools/debugging/debugging-devtools.html

If you are doing something complicated in your onReceive method, then consider having your BroadcastReceiver start a Service and pass along the data it gets from within onReceive. The Service can then do the longer processing.

Answer:

I encountered this problem even when in debug mode. It turns out that another broadcast was being sent and wasn’t being handled because I was debugging the other broadcast on the main thread. Android considered my process to be in ANR and killed the whole process.

I had to temporarily modify the code to not call the other broadcast while doing my debugging.