Home » Android » Android: BroadcastReceiver Time limit

Android: BroadcastReceiver Time limit

Posted by: admin June 15, 2020 Leave a comment


Are there any time limits defined for actions run inside a BroadcastReceiver.onReceive method?

How to&Answers:

onReceive() is called on the main application thread, the same thread that drives your UI. In general, you want onReceive() to return in under a millisecond, in case your UI is in the foreground, so you do not freeze the UI (a.k.a., have “jank”). There is also a 5-10 second limit, after which Android will basically crash your app.

However, you cannot reliably fork a background thread from onReceive(), as once onReceive() returns, your process might be terminated, if you are not in the foreground.

For a manifest-registered receiver, a typical pattern is to have onReceive() delegate the work to an IntentService, which has its own background thread and, being a service, tells the OS that your process is still doing some work and should let your process run a bit longer.