Android: BroadcastReceiver 时间限制

Android: BroadcastReceiver Time limit

是否为 BroadcastReceiver.onReceive 方法中的操作 运行 定义了任何时间限制?

onReceive() 在主应用程序线程上调用,与驱动 UI 的线程相同。一般来说,你希望 onReceive() 到 return 在一毫秒内,以防你的 UI 在前台,所以你不会冻结 UI (a.k.a., 有"jank").还有 5-10 秒的限制,超过 5-10 秒后 Android 基本上会使您的应用程序崩溃。

但是,您不能可靠地从 onReceive() 派生后台线程,因为一旦 onReceive() returns,如果您不在前台,您的进程可能会终止。

对于清单注册的接收器,典型的模式是 onReceive() 将工作委托给 IntentService,它有自己的后台线程,并且作为服务,告诉 OS 你的过程仍在做一些工作,应该让你的过程 运行 长一点。