Android 何时执行服务的onstart命令
服务的onStartCommand何时准确执行 在下面的代码中,我的服务是从活动中的onCreate启动的Android 何时执行服务的onstart命令,android,Android,服务的onStartCommand何时准确执行 在下面的代码中,我的服务是从活动中的onCreate启动的 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Intent intent = new Intent(
@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);
}
那么安卓系统什么时候决定调用onStartCommand呢?我所知道的是,在调用startService后的某个时间,它在主线程上运行。在调用onStart命令之前,将完全执行onCreate。
每次客户端通过调用startService(Intent)显式启动服务时,系统都会调用它,提供它提供的参数和表示启动请求的唯一整数令牌
这意味着,每次您怀着意图调用startService(intent)
,就会调用onStartCommand
。如果有一百个活动都需要启动并绑定到此服务,那么它们都将调用startService()
,并且将调用onStartCommand
现在,当它是时,确切地说,调用有点难回答。这是将来的某个时候,这就是您的ServiceConnection
异步工作的原因。它很可能在下一个UI线程周期内,但这不是您应该依赖的
如果您需要合理了解服务
的启动时间,可以使用向所有注册的侦听器广播事件。LocalBroadcastManager#sendBroadcastSync
实际上会一直阻塞,直到所有侦听器都响应为止,因此它在这种情况下可能很有用