通常,当我创建一个Android服务,我实现onCreate
方法,但在我的最后一个项目,这并不工作。 我试图实现onStartCommand
,这似乎工作。
现在的问题是:当我要实现需要哪种方法服务? 这方法我要实现? onCreate
, onStartCommand
,或两者兼而有之? 什么是每一个角色?
通常,当我创建一个Android服务,我实现onCreate
方法,但在我的最后一个项目,这并不工作。 我试图实现onStartCommand
,这似乎工作。
现在的问题是:当我要实现需要哪种方法服务? 这方法我要实现? onCreate
, onStartCommand
,或两者兼而有之? 什么是每一个角色?
onCreate()
时,被调用Service
对象被实例化(即:当在创建服务)。 你应该做的事情在这个方法中,你只需要做一次(即:初始化一些变量等)。 onCreate()
将只被称为每个实例化对象一次。
你只需要实现onCreate()
如果你真的想/需要初始化的东西只有一次 。
onStartCommand()
被调用每一个客户开始使用服务时 startService(Intent intent)
。 这意味着, onStartCommand()
可以被调用多次。 你应该做的事情在这个方法中, 每一个客户从服务请求一些时间是必要的。 这在很大程度上取决于你的服务做什么和它如何与客户端进行通信(反之亦然)。
如果不执行onStartCommand()
那么你将无法得到来自任何信息Intent
客户端传递给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")
{}
}