安卓的onCreate或onStartCommand启动服务(Android onCreate or

2019-07-17 21:40发布

通常,当我创建一个Android服务,我实现onCreate方法,但在我的最后一个项目,这并不工作。 我试图实现onStartCommand ,这似乎工作。

现在的问题是:当我要实现需要哪种方法服务? 这方法我要实现? onCreateonStartCommand ,或两者兼而有之? 什么是每一个角色?

Answer 1:

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

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

onStartCommand()被调用一个客户开始使用服务 startService(Intent intent) 。 这意味着, onStartCommand()可以被调用多次。 你应该做的事情在这个方法中, 一个客户从服务请求一些时间是必要的。 这在很大程度上取决于你的服务做什么和它如何与客户端进行通信(反之亦然)。

如果不执行onStartCommand()那么你将无法得到来自任何信息Intent客户端传递给onStartCommand()和你的服务可能无法做任何有用的工作。



Answer 2:

服务的行为无论你想同样喜欢活动 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")
     {}
}


文章来源: Android onCreate or onStartCommand for starting service