通常,当我创建一个 Android 服务时,我会实现该onCreate
方法,但在我的上一个项目中,这不起作用。我尝试实施onStartCommand
,这似乎有效。
问题是:当我必须实现服务时需要哪种方法?我必须实施哪些方法?onCreate
, onStartCommand
, 还是两者兼而有之?每个角色的作用是什么?
通常,当我创建一个 Android 服务时,我会实现该onCreate
方法,但在我的上一个项目中,这不起作用。我尝试实施onStartCommand
,这似乎有效。
问题是:当我必须实现服务时需要哪种方法?我必须实施哪些方法?onCreate
, onStartCommand
, 还是两者兼而有之?每个角色的作用是什么?
onCreate()
在实例化对象时调用Service
(即:创建服务时)。你应该在这个方法中做一些你只需要做一次的事情(即:初始化一些变量等)。每个实例化对象onCreate()
只会被调用一次。
onCreate()
如果你真的想要/只需要初始化一次,你只需要实现。
onStartCommand()
每次客户端使用startService(Intent intent)
. 这意味着onStartCommand()
可以多次调用。每次客户端从您的服务请求某些内容时,您都应该在此方法中执行所需的操作。这在很大程度上取决于您的服务做什么以及它如何与客户端通信(反之亦然)。
如果您不实施onStartCommand()
,那么您将无法从Intent
客户端传递的任何信息中获取任何信息,onStartCommand()
并且您的服务可能无法执行任何有用的工作。
服务的行为与 Activity 相同无论您想
associate
使用服务做什么,都会onCreate
像初始化一样进入
并且每当service
使用startService 调用时。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")
{}
}