对于我的应用程序,我想启动一个MediaPlayer
来播放远程流并捕获和显示事件。即使应用程序移动到后台,媒体播放器也必须继续播放。因此,我认为Service
是包装实现代码的正确选择:
应用程序的工具,告诉系统它想要在后台执行的操作(即使用户不是 直接与应用程序交互)。这对应于通话 到Context.startService(),它要求系统安排工作 服务,直到服务或其他人明确运行 停止它。
应用程序的一个工具,用于将其某些功能公开给其他应用程序。这对应于调用 Context.bindService(),它允许长期连接 为了与之互动而对服务做出了贡献。
由于我在服务中执行阻止任务,这也会阻止不接受的UI线程。这使我有可能使用IntentService
或将onStartCommand()
的代码委托给另一个线程。使用IntentService
我必须在Looper.loop()
结束时调用onHandleIntent()
。
这种方法就像一个魅力,但它让我觉得这只是一个黑客,应该做得恰到好处。甚至可能没有Service
或IntentService
。毕竟我还在使用事件总线库Otto。