Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 何时执行服务的onstart命令_Android - Fatal编程技术网

Android 何时执行服务的onstart命令

Android 何时执行服务的onstart命令,android,Android,服务的onStartCommand何时准确执行 在下面的代码中,我的服务是从活动中的onCreate启动的 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Intent intent = new Intent(

服务的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);
    }
那么安卓系统什么时候决定调用onStartCommand呢?我所知道的是,在调用startService后的某个时间,它在主线程上运行。在调用onStart命令之前,将完全执行onCreate。

每次客户端通过调用startService(Intent)显式启动服务时,系统都会调用它,提供它提供的参数和表示启动请求的唯一整数令牌

这意味着,每次您怀着意图调用
startService(intent)
,就会调用
onStartCommand
。如果有一百个活动都需要启动并绑定到此服务,那么它们都将调用
startService()
,并且将调用
onStartCommand

现在,当它是时,确切地说,调用有点难回答。这是将来的某个时候,这就是您的
ServiceConnection
异步工作的原因。它很可能在下一个UI线程周期内,但这不是您应该依赖的

如果您需要合理了解
服务
的启动时间,可以使用向所有注册的侦听器广播事件。
LocalBroadcastManager#sendBroadcastSync
实际上会一直阻塞,直到所有侦听器都响应为止,因此它在这种情况下可能很有用