我正在开发一个MusicPlayer应用程序,我使用本地服务让MediaPlayer在后台运行。似乎我们可以发送意图来启动服务或绑定服务。我理解startService的意义,我们让它运行并向stopService发送意图,对于bindService,我们返回一个IBinder来与服务进行通信。但是,我想知道这样做的重点是什么?我们是否必须发送意图以使其有效? 如果我只是检索一个静态的Service实例,并直接调用它的方法,我也可以实现启动它并与之通信。
我找到了一个不使用startService和bindService的示例,但它可以作为一个简单的MusicPlayer使用。
答案 0 :(得分:1)
但是,我想知道这样做的目的是什么?
要让服务运行,告诉操作系统"嘿,我们代表用户在这里工作,请让我的流程更长一段时间"。
the documentation中介绍了这一点。
我们是否必须发送意图以使其有效?
是
如果我只检索一个静态的Service实例,并直接调用它的方法,我也可以实现启动它并与之通信。
然后它只是一个Java对象,继承Service
没有意义。此外,这意味着当您的UI不在前台时,您的流程将以更短的时间存活。
我找到了一个不使用startService和bindService的示例,但它可以作为一个简单的MusicPlayer使用。
该服务已通过startService()
,in ArtistSearchActivity
启动。在此之前,该服务不存在,单例将为null
。
答案 1 :(得分:0)
startService。 当您需要与之通信时使用BindService。
在您的应用中,我认为您将与该服务进行通信(例如,如果您有选择该歌曲的活动,您将向服务发送数据说:"这是您的歌曲现在必须玩#34;)我认为你需要BindService而不是startService。
我希望这会对你有所帮助:D