尝试为2种不同的服务使用相同的foreGroundNotification

时间:2015-03-15 14:39:42

标签: android garbage-collection android-mediaplayer intentservice

好的,我正在尝试为2种不同的前台服务使用相同的通知。

  1. 我有一个音乐播放器服务,播放音乐......呃。
  2. 我有下载音乐文件的下载服务。
  3. 到目前为止,我已尝试过以下内容:

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

      1. 不知何故,知道通知正在显示,我们不应该调用start-foreground而只是更新它(如果2个服务中的任何一个在前台,相关的进程无法获得GC,所以在我看来我的音乐播放器是安全的,即使实际的服务不在前台,假设这是正确的吗?)
      2. 合并2项服务(真的要避免这种情况)
      3. 会感激一些建议:)

1 个答案:

答案 0 :(得分:0)

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