通常当我创建Android服务时,我实现onCreate
方法,但在我的上一个项目中,这不起作用。我尝试实施onStartCommand
,这似乎有效。
问题是:当我必须实现一个需要哪种方法的服务时?我必须实施哪些方法? onCreate
,onStartCommand
或两者兼而有之?每个人的角色是什么?
答案 0 :(得分:166)
onCreate()
对象时调用 Service
(即:服务创建时)。你应该在这个方法中做一些你只需要做一次的事情(即:初始化一些变量等)。 onCreate()
只会被调用一次每个实例化对象。
如果您确实需要/需要初始化一次,则只需要实施onCreate()
。
onStartCommand()
在每次客户端使用startService(Intent intent)
启动服务时都会被称为。这意味着可以多次调用onStartCommand()
。您应该使用此方法执行所需的操作每次客户端从您的服务请求某些内容。这很大程度上取决于您的服务的作用以及它与客户的通信方式(反之亦然)。
如果您未实施onStartCommand()
,那么您将无法从Intent
获取客户传递给onStartCommand()
的任何信息,而您的服务可能无法做任何有用的工作。
答案 1 :(得分:9)
服务行为与活动相同无论您希望
associate
使用某项服务,您都会onCreate
进行初始化
以及使用 startService 调用service
的时间。 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")
{}
}