通常,当我创建Android服务时,会实现该onCreate
方法,但是在我的上一个项目中,此方法不起作用。我尝试实施onStartCommand
,这似乎可行。
问题是:何时必须实施服务,需要哪种方法?我必须实现哪些方法?onCreate
,onStartCommand
或两者兼而有之?每个角色扮演什么角色?
通常,当我创建Android服务时,会实现该onCreate
方法,但是在我的上一个项目中,此方法不起作用。我尝试实施onStartCommand
,这似乎可行。
问题是:何时必须实施服务,需要哪种方法?我必须实现哪些方法?onCreate
,onStartCommand
或两者兼而有之?每个角色扮演什么角色?
Answers:
onCreate()
在Service
实例化对象时调用(即:创建服务时)。您应该使用此方法执行只需要执行一次的操作(即:初始化一些变量等)。每个实例化对象onCreate()
只会被调用一次。
仅onCreate()
当您实际上只想/ 仅需要初始化一次时,才需要实现。
onStartCommand()
客户端每次使用启动服务都会调用startService(Intent intent)
。这意味着onStartCommand()
可以多次调用。每次客户端从您的服务中请求某些内容时,您都应该使用此方法执行所需的操作。这在很大程度上取决于您的服务功能以及它与客户端的通信方式(反之亦然)。
如果您未实现,onStartCommand()
那么您将无法从Intent
客户端传递给的信息中获取任何信息,onStartCommand()
并且您的服务可能无法执行任何有用的工作。
startService()
,如果服务未运行,则Android将创建服务类的实例(这是一个服务对象),然后onCreate()
在该对象上调用。然后它将调用onStartCommand()
该对象。如果一段时间后再次调用startService()
,如果服务仍在运行,则Android将不会创建新的服务对象。相反,它将仅调用onStartCommand()
现有服务对象。明白了吗?
服务的行为就像“活动”一样,无论您想要
associate
使用什么服务,它都会onCreate
像初始化一样进入
以及每当service
使用startService调用时。onStartCommand
将被称为。您可以通过任何动作来执行。就像音乐播放器一样,您可以播放,暂停,停止使用动作
您可以operation in service
通过发送操作并接收操作来执行任何操作onStartCommand
onCreate
像构造函数一样工作。
简而言之编辑
onCreate()
仅在您首次启动呼叫时调用一次,Service
而onStartCommand()
每次您startService
再次呼叫时调用一次。它可以让您设置诸如播放,停止,暂停音乐之类的动作。
public void onStartCommand()
{
if(intent.getAction.equals("any.play")
{
//play song
}
else if(intent.getAction.equals("any.stop")
{}
}
onCreate
总是被称为