运行 android 服务与同一服务内的 recyclerview 适配器之间的通信
Comunication between a running android service and a recyclerview adapter inside the same service
所以我有一个显示一些项目的前台服务,当我在回收站视图中按下一个项目时,我想在封闭服务中执行一些功能。我知道我可以使用该服务的 Instance
,但这是内存泄漏。我也知道服务和 activity 之间的 binding/unbinding 方法,但我认为这不适用于我的情况?
通常情况下,您希望在服务中执行的所有操作都应该使用 Binder(如果服务和应用程序在同一个进程中)及其 onBind() 方法来实现并调用。
在您的特定情况下,我假设您的服务是 WindowManager 创建的 UI 的“所有者”(如浮动 window),因此:
- 如果Service和UI在同一个Thread中,你可以传递一个Listener/Callback给它或者使用普通的onBind()方式
- 如果 Service 和 UI 在不同的 Theads 中:您需要在它们之间进行某种同步(Looper+Message、Queue 等...)
- 如果服务和 UI 在不同的进程中:您需要实施“AIDL”技术
所以我有一个显示一些项目的前台服务,当我在回收站视图中按下一个项目时,我想在封闭服务中执行一些功能。我知道我可以使用该服务的 Instance
,但这是内存泄漏。我也知道服务和 activity 之间的 binding/unbinding 方法,但我认为这不适用于我的情况?
通常情况下,您希望在服务中执行的所有操作都应该使用 Binder(如果服务和应用程序在同一个进程中)及其 onBind() 方法来实现并调用。
在您的特定情况下,我假设您的服务是 WindowManager 创建的 UI 的“所有者”(如浮动 window),因此:
- 如果Service和UI在同一个Thread中,你可以传递一个Listener/Callback给它或者使用普通的onBind()方式
- 如果 Service 和 UI 在不同的 Theads 中:您需要在它们之间进行某种同步(Looper+Message、Queue 等...)
- 如果服务和 UI 在不同的进程中:您需要实施“AIDL”技术