尝试对 2 个不同的服务使用相同的 foreGroundNotification

Trying to use same foreGroundNotification for 2 different services

好的,所以我正在尝试对 2 个不同的前台服务使用相同的通知。

  1. 我有一个音乐播放器服务,可以播放音乐....呃。
  2. 我有下载音乐文件的下载器服务。

到目前为止我已经尝试了以下方法:

  1. 我将音乐播放器服务保持在非前台: 我观察到,当下载服务完成并且其前台状态完成时,我在其他服务中的静态最终 mediaPlayer 得到了 GC。基本上我的整个音乐播放器服务都停止了。这可能是预期的行为,并且这种情况是随机发生的,而不是在下载程序完成后立即发生。
  2. 我在两个服务中都调用了 startForeground() : 在这种情况下,只要这两项服务中的任何一项完成,前台通知就会消失。可能未达到两种服务的前台状态。无论如何,我的音乐播放器仍然可以得到 GC。

我打算做什么:

  1. 不知何故,知道通知正在显示,我们不应该调用 start-foreground 而只是更新它(如果这两个服务中的任何一个在前台,相关进程就无法进行 GC,所以在我认为我的音乐播放器是安全的,即使实际服务不在前台,我的假设是否正确?)
  2. 合并 2 个服务(真的想避免这种情况)

希望得到一些建议:)

我认为您应该有一个在前台运行的服务(当需要时),并让该服务保存您的播放器和下载程序的实例。它们不需要是服务,它们可以只是普通对象这可能是您的选项 2 的变体,但至少对我来说这似乎是正确的方法。