通常,当我创建一个Android服务时,我会实现onCreate
方法,但是在我的上一个项目中,这个方法不起作用。我尝试实现了onStartCommand
,这似乎起作用了。
问题是:当我必须实现一个服务时,需要哪个方法?我必须实现哪些方法?onCreate
、onStartCommand
,还是两者都实现?它们各自的作用是什么?
发布于 2013-01-06 22:00:11
onCreate()
在实例化Service
对象时调用(即:当服务是创建的时)。你应该在这个方法中做你只需要做一次的事情(例如:初始化一些变量,等等)。对于每个实例化的对象,onCreate()
只会被调用一次。
如果你真的想/只需要在中初始化一次,你只需要实现onCreate()
。
每次客户端使用startService(Intent intent)
启动服务时,onStartCommand()
都会被调用。这意味着onStartCommand()
可以被多次调用。您应该在此方法中执行每次客户端从您的服务请求某些内容时所需的操作。这在很大程度上取决于您的服务做了什么以及它如何与客户端通信(反之亦然)。
如果您没有实现onStartCommand()
,那么您将无法从客户端传递给onStartCommand()
的Intent
中获取任何信息,并且您的服务可能无法执行任何有用的工作。
发布于 2014-07-14 14:18:56
服务的行为类似于Activity任何您想要初始化的服务都会像初始化一样进入
associate
以及每当使用startService调用service
时。将调用onStartCommand
。并且您可以传递要执行的任何操作。就像一个音乐播放器一样,你可以播放,暂停,停止使用动作
您可以通过在onStartCommand
上发送和接收操作来执行任何operation in service
操作
onCreate
的工作方式类似于构造函数。
在Short中编辑
onCreate()
只在您第一次启动Service
时调用,而onStartCommand()
在您再次调用startService
时都会调用。它可以让你设置一个动作,比如播放,停止,暂停音乐。
public void onStartCommand()
{
if(intent.getAction.equals("any.play")
{
//play song
}
else if(intent.getAction.equals("any.stop")
{}
}
https://stackoverflow.com/questions/14182014
复制相似问题