Android服务:在#onCreate()上按需绑定与绑定绑定

And*_*ard 5 service android

我们有一项服务,负责我们的一项活动.我们对Android很新,并想知道绑定到该服务的最佳时刻是什么.我们只需要通过活动可能进行的一半交互的服务.因此,我们必须满足以下两种可能性之一:

  • 在我们真正需要它时绑定到服务,这将在实现方面增加相当大的开销
  • 在onCreate()方法中绑定到Service,而不会检查服务是否正在运行,是否按需绑定,可能是缓存请求等.

那里的"安卓方式"是什么?正在运行的服务是否需要大量开销,还是仅在真正需要时启动?服务本身非常轻量级.

yor*_*rkw 1

我个人更喜欢在onCreate()中调用bindService(),使用完后在onDestroy()中调用unbindService()。原因是bindService()实际上是一个异步调用。API 中尚未对此进行详细记录。当您调用bindService()时,在ServiceConnection.onServiceConnected()回调方法中获得的binder对象的引用不会立即实例化,在调用bindService()之后和binder对象实例化并准备使用之前之间有一个延迟。所以最适合调用它的地方是onCreate(),因为我们通常不会执行太多繁重的操作,并且需要在这个阶段立即使用binder对象。