什么时候服务的onStartCommand完全执行?
在以下代码中,我的服务是从我的活动中的onCreate
启动的 @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent = new Intent(this, CenseDroidService.class);
//onStartCommand is not extecuted immediatly after startService
startService(intent);
bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
}
那么Android系统什么时候决定调用onStartCommand?我所知道的就是在调用startService之后的一段时间内在主线程上运行。 onCreate在调用onStartCommand之前完全执行。
答案 0 :(得分:0)
每次客户端通过调用startService(Intent)显式启动服务时,系统调用,提供它提供的参数和表示启动请求的唯一整数标记
这意味着,每次使用Intent调用startService(intent)
时,都会调用onStartCommand
。如果您有一百个活动需要启动并绑定到此服务,那么他们将调用startService()
并调用onStartCommand
。
现在,当完全调用时,回答起来有点棘手。在将来的某个时间,这就是您的ServiceConnection
异步工作的原因。很可能它可以在下一个UI线程循环中,但它不是你应该依赖的东西。
如果您需要合理了解Service
何时开始,您可以使用LocalBroadcastManager向所有已注册的听众广播该事件。 LocalBroadcastManager#sendBroadcastSync
实际上将阻塞,直到所有侦听器都响应,因此它可能对此方案有用。