EventBus 是否适合从 RecyclerView 适配器到使用 RecyclerView 的片段的通信
Is EventBus good for communication from RecyclerView adapter to a fragment which is using the RecyclerView
我正在使用 RecyclerView
来显示视频列表,点击任何视频,视频播放器开始播放视频,播放器有自定义控件,一个是下一个和上一个,点击它们时 RecyclerView 给出下一个或上一个视频。所以在这里我使用 EventBus 来实现适配器和视频播放器片段之间的通信。
它工作正常,但我怀疑 EventBus 通信中存在泄漏,对于某些繁重的应用程序,这可能会中断流程。
对于此类通信是否有任何替代方法或修复方法?
使用 EventBus 来解耦你的代码是好的。但对于你的情况,这有点矫枉过正。您的 Fragment 和 RecyclerView 适配器是耦合代码,它们直接相互通信并在同一 Activity 内部(我假设您使用的是单个 Activity 来托管 RecyclerView
和 Fragment
) 所以你不需要在这里使用 EventBus。
理论上,如果您发送的是 pojo(没有任何应用程序上下文),则不应有任何泄漏。
您需要使用 Callback / Listener 而不是使用 EventBus。您需要在 RecyclerView 适配器中创建一个监听器并在 Activity 中设置监听器。每当您单击视频项目时,告诉听众通知 Activity。当听众收到消息时,打开包含所选视频的片段。
我正在使用 RecyclerView
来显示视频列表,点击任何视频,视频播放器开始播放视频,播放器有自定义控件,一个是下一个和上一个,点击它们时 RecyclerView 给出下一个或上一个视频。所以在这里我使用 EventBus 来实现适配器和视频播放器片段之间的通信。
它工作正常,但我怀疑 EventBus 通信中存在泄漏,对于某些繁重的应用程序,这可能会中断流程。
对于此类通信是否有任何替代方法或修复方法?
使用 EventBus 来解耦你的代码是好的。但对于你的情况,这有点矫枉过正。您的 Fragment 和 RecyclerView 适配器是耦合代码,它们直接相互通信并在同一 Activity 内部(我假设您使用的是单个 Activity 来托管 RecyclerView
和 Fragment
) 所以你不需要在这里使用 EventBus。
理论上,如果您发送的是 pojo(没有任何应用程序上下文),则不应有任何泄漏。
您需要使用 Callback / Listener 而不是使用 EventBus。您需要在 RecyclerView 适配器中创建一个监听器并在 Activity 中设置监听器。每当您单击视频项目时,告诉听众通知 Activity。当听众收到消息时,打开包含所选视频的片段。