Android BroadcastReceiver及杀进程

Android BroadcastReceiver and killing process

假设我们在某个广播上从 BrodcastReceiver 启动服务。在 onReceive() returns 之后和服务启动之前可以终止进程吗?如果是这样,如何防止这种行为?

如果 BroadcastReceiver 调用了 Context.startService() 并且它收到了一个非 null ComponentName 的对象,那么不会。这意味着在系统中找到了 Service,并且已经 "started"。请注意,启动是异步的,因此无法保证 Service 在接收方退出其 onReceive() 回调之前已收到其 onStartCommand() 回调。

另请注意,即使 BroadcastReceiver 已启动 Service,默认情况下这对电源管理没有影响。因此,您的 Service 有可能在设备完全启动和 运行ning 之前不会被回调 - 它可能会在您的 BroadcastReceiver 完成之后但在您的 [=14] 之前重新进入睡眠状态=] 到达 运行.