首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用于启动服务的Android onCreate或onStartCommand

用于启动服务的Android onCreate或onStartCommand
EN

Stack Overflow用户
提问于 2013-01-06 20:19:59
回答 2查看 88.3K关注 0票数 114

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

问题是:当我必须实现一个服务时,需要哪个方法?我必须实现哪些方法?onCreateonStartCommand,还是两者都实现?它们各自的作用是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-06 22:00:11

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

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

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

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

票数 201
EN

Stack Overflow用户

发布于 2014-07-14 14:18:56

服务的行为类似于Activity任何您想要初始化的服务都会像初始化一样进入associate

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

您可以通过在onStartCommand上发送和接收操作来执行任何operation in service操作

onCreate的工作方式类似于构造函数。

在Short中编辑

onCreate()只在您第一次启动Service时调用,而onStartCommand()在您再次调用startService时都会调用。它可以让你设置一个动作,比如播放,停止,暂停音乐。

代码语言:javascript
运行
复制
public void onStartCommand()
{
     if(intent.getAction.equals("any.play")
     {
        //play song
     }
     else if(intent.getAction.equals("any.stop")
     {}
}
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14182014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档