115

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

问题是:当我必须实现服务时需要哪种方法?我必须实施哪些方法?onCreate, onStartCommand, 还是两者兼而有之?每个角色的作用是什么?

4

2 回答 2

203

onCreate()在实例化对象时调用Service(即:创建服务时)。你应该在这个方法中做一些你只需要做一次的事情(即:初始化一些变量等)。每个实例化对象onCreate()只会被调用一次。

onCreate()如果你真的想要/只需要初始化一次,你只需要实现。

onStartCommand()每次客户端使用startService(Intent intent). 这意味着onStartCommand()可以多次调用。每次客户端从您的服务请求某些内容时,您都应该在此方法中执行所需的操作。这在很大程度上取决于您的服务做什么以及它如何与客户端通信(反之亦然)。

如果您不实施onStartCommand(),那么您将无法从Intent客户端传递的任何信息中获取任何信息,onStartCommand()并且您的服务可能无法执行任何有用的工作。

于 2013-01-06T14:00:11.093 回答
13

服务的行为与 Activity 相同无论您想associate使用服务做什么,都会onCreate像初始化一样进入

并且每当service使用startService 调用时。onStartCommand将被调用。并且您可以传递任何操作来执行。就像音乐播放器一样,您可以播放、暂停、停止使用动作

你可以operation in service通过发送一个动作并接收它来做任何事情onStartCommand

onCreate像构造函数一样工作。

简短编辑

onCreate()仅在您第一次启动时调用,ServiceonStartCommand()每次您再次调用时调用startService。它可以让您设置播放、停止、暂停音乐等动作。

public void onStartCommand()
{
     if(intent.getAction.equals("any.play")
     {
        //play song
     }
     else if(intent.getAction.equals("any.stop")
     {}
}
于 2014-07-14T06:18:55.537 回答