代码之家  ›  专栏  ›  技术社区  ›  Dexter

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

  •  0
  • Dexter  · 技术社区  · 10 年前

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

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

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

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

    我计划做什么:

    1. 不知怎的,知道通知正在显示,我们不应该调用开始前台,而应该只是更新它(如果这两个服务中的任何一个在前台,相关的进程都无法获得GC’ed,所以在我看来,我的音乐播放器是安全的,即使实际的服务不在前台,我假设这是正确的吗?)
    2. 合并两个服务(真的想避免这种情况)

    请提供一些建议:)

    1 回复  |  直到 10 年前
        1
  •  0
  •   nPn    10 年前

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