Android onCreate或onStartCommand启动服务
通常当我创build一个Android服务时,我实现了onCreate
方法,但是在我的上一个项目中这是行不通的。 我试着实现onStartCommand
,这似乎工作。
问题是:什么时候我需要实现一个服务需要哪种方法? 我必须执行哪些方法? onCreate
, onStartCommand
,还是两者? 每个人的angular色是什么?
当Service
对象被实例化时(即:服务被创build时 ), onCreate()
被调用。 你应该在这个方法中做一些你只需要做一次的事情(即:初始化一些variables等等)。 每个实例化的对象只能调用一次onCreate()
。
你只需要实现onCreate()
如果你真的想/ 只需要初始化一次 。
每次客户端使用startService(Intent intent)
启动服务时,都会调用onStartCommand()
startService(Intent intent)
。 这意味着onStartCommand()
可以被多次调用。 您应该在每次客户端向您的服务请求某些东西时,使用此方法执行这些操作。 这很大程度上取决于您的服务是什么以及如何与客户进行交stream(反之亦然)。
如果您没有实现onStartCommand()
那么您将无法从客户端传递给onStartCommand()
的Intent
中获取任何信息,并且您的服务可能无法执行任何有用的工作。
服务的行为与Activity相同无论您想与服务
associate
一次,都会像初始化一样进行创build
并且每当使用startService调用service
。 onStartCommand
将被调用。 你可以通过任何行动来执行。 喜欢音乐播放器,可以播放,暂停,停止使用动作
而且你可以通过发送一个动作并在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") {} }