Android onCreate或onStartCommand启动服务

通常当我创build一个Android服务时,我实现了onCreate方法,但是在我的上一个项目中这是行不通的。 我试着实现onStartCommand ,这似乎工作。

问题是:什么时候我需要实现一个服务需要哪种方法? 我必须执行哪些方法? onCreateonStartCommand ,还是两者? 每个人的angular色是什么?

Solutions Collecting From Web of "Android onCreate或onStartCommand启动服务"

Service对象被实例化时(即:服务被创build时 ), onCreate()被调用。 你应该在这个方法中做一些你只需要做一次的事情(即:初始化一些variables等等)。 每个实例化的对象只能调用一次onCreate()

你只需要实现onCreate()如果你真的想/ 需要初始化一次

每次客户端使用startService(Intent intent)启动服务时,都会调用onStartCommand() startService(Intent intent) 。 这意味着onStartCommand()可以被多次调用。 您应该在每次客户端向您的服务请求某些东西时,使用此方法执行这些操作。 这很大程度上取决于您的服务是什么以及如何与客户进行交stream(反之亦然)。

如果您没有实现onStartCommand()那么您将无法从客户端传递给onStartCommand()Intent中获取任何信息,并且您的服务可能无法执行任何有用的工作。

服务的行为与Activity相同无论您想与服务associate一次,都会像初始化一样进行创build

并且每当使用startService调用serviceonStartCommand将被调用。 你可以通过任何行动来执行。 喜欢音乐播放器,可以播放,暂停,停止使用动作

而且你可以通过发送一个动作并在onStartCommand上接收它来进行任何operation in service

onCreate像构造函数一样工作。

总之编辑

onCreate()只会在您第一次启动Service调用onStartCommand()调用,而您每次再次调用startService时都会调用onStartCommand() 。 它让你设置一个动作,如播放,停止,暂停音乐。

 public void onStartCommand() { if(intent.getAction.equals("any.play") { //play song } else if(intent.getAction.equals("any.stop") {} }