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

5
我们有一个服务,负责我们的某个活动中的几件事。我们在Android开发中还比较新,想知道绑定该服务的最佳时机是什么。我们只需要该服务来处理活动可用的一半交互。所以我们必须选择以下两种可能性之一:
  • 我们真正需要服务时绑定它,这将增加实现方面的相当大的开销
  • 在onCreate()方法中绑定服务,避免了检查服务是否正在运行、按需绑定服务、缓存请求等开销
  • 在这里,“Android方式”是什么?运行服务是否会带来很大的负担,或者只应在真正需要时启动服务?服务本身非常轻量级。

    1
    我个人会在onCreate中将其绑定。一直进行绑定/解绑似乎是不必要的,而且如果你看看服务的实现,你会发现并不是这样做的。至少这是我的经验,虽然我对服务的具体细节并不是很了解。四处查看其他人和谷歌的实现。 - DecodeGnome
    1个回答

    1
    个人而言,我更喜欢在 onCreate() 中调用 bindService(),在使用完毕后在 onDestroy() 中调用 unbindService()。原因是 bindService() 实际上是一个异步调用,在 API 中没有被很好地记录。当你调用 bindService() 时,在 ServiceConnection.onServiceConnected() 回调方法中获取的 binder 对象的引用并不会立即实例化,调用 bindService() 和 binder 对象实例化并准备好使用之间存在一定的时间差。因此,在 onCreate() 中调用它是最合适的,因为在这个阶段通常不会执行太多的重操作,并且需要立即使用 binder 对象。

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接