我通过意图在活动和服务之间发送数据(我多次调用startForegroundService,因为再次调用onStartCommand并使用getIntent来获取数据)。
示例:
Intent intent = new Intent(getActivity(), MediaPlayerService.class);
intent.putParcelableArrayListExtra("songList", Main.musicList);
intent.putExtra("songIndex", position);
intent.setAction(Constants.ACTIONS.ACTION_PLAY);
ContextCompat.startForegroundService(getActivity(), intent);
我在某处阅读,最好通过绑定与我的服务进行通信。
但是我通过这种方法实现了同样的目的,所以哪一种更可取?
答案 0 :(得分:0)
从文档中:
开始
当应用程序组件(例如 活动)通过调用startService()启动它。一旦启动,一项服务 可以无限期地在后台运行,即使 开始它被摧毁。通常,启动的服务执行一次 操作,并且不会将结果返回给调用方。例如,它 可能会通过网络下载或上传文件。当手术 完成后,服务应自行停止。
绑定
当应用程序组件通过以下方式绑定到服务时,该服务就被“绑定”了 调用bindService()。绑定服务提供客户端服务器 允许组件与服务交互的接口,发送 请求,获取结果,甚至跨流程 进程间通信(IPC)。绑定服务仅运行至 另一个应用程序组件已绑定到它。多个组件可以 一次绑定到服务,但是当所有绑定解除绑定后,该服务 被摧毁。
您可以阅读以下有关@的更多信息:Android Services,Bound Services