用于启动服务的Android onCreate或onStartCommand

时间:2013-01-06 12:19:59

标签: android android-service oncreate

通常当我创建Android服务时,我实现onCreate方法,但在我的上一个项目中,这不起作用。我尝试实施onStartCommand,这似乎有效。

问题是:当我必须实现一个需要哪种方法的服务时?我必须实施哪些方法? onCreateonStartCommand或两者兼而有之?每个人的角色是什么?

2 个答案:

答案 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")
     {}
}