【问题标题】:Can I stop Android from killing my app?我可以阻止 Android 杀死我的应用程序吗?
【发布时间】:2011-11-19 06:25:08
【问题描述】:

我找不到任何好的应用程序来从一个可以在后台运行的 URL 流式传输满足我的要求的 MP3,所以我决定自己编写一个。事实证明,如果您运行的是 Froyo 或更高版本,则使用本机 MediaPlayer 流式传输 MP3 非常容易,我就是这样。

但我的问题是,如果我切换应用程序并尝试保持直播(其中一些持续 2-4 小时)并在我听的时候玩游戏或其他东西,它有时会死掉。我不确定到底是什么问题,我的猜测是 Android 系统决定终止该进程是可以的……但事实并非如此。

如果需要资源而不是我的流式 mp3 应用程序,我可以做些什么让它杀死其他进程?

我尝试过的:

android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_AUDIO);

但这样不好。

【问题讨论】:

  • 可能你在那个游戏中也有一些流媒体,虽然不确定,但碰巧android无法播放多个流媒体音频.......stackoverflow.com/questions/5642508/…
  • 我也听说过,但在我的活动是单实例之前,我可以同时运行它至少两次,同时流式传输不同的文件。

标签: android android-mediaplayer


【解决方案1】:

如果您还没有,您需要将该服务设为前台服务。前台服务必须在通知栏中显示一个图标,除非内存压力过大,否则Android系统不会杀死它们。

查看startForeground()的文档

【讨论】:

  • 太棒了。我的下一步是为其添加通知。看起来前台服务会同时处理这两个问题。
  • 我认为您有解决方案。下面的答案不是解决方案,因为取决于 Android 版本。
【解决方案2】:

我发现在我的 Droid Incredible 更新到 Gingerbread (2.3.4) 之后,它突然就可以工作了。我根本没有做任何改变,它只是不会像在 Froyo 中那样在 Gingerbread 中消失。我知道 Gingerbread 对媒体播放器进行了改进,所以我不得不假设 Froyo 中存在一个已在 Gingerbread 中修复的错误。

【讨论】:

    【解决方案3】:

    据我所知,一个程序不可能永远运行,在某些时候操作系统会杀死它。但是您可以尝试提供一项服务,并使其偶尔生成带有有用信息的通知。然后,重新开始活动。

    【讨论】:

      【解决方案4】:

      这是由于活动Lifecycle 造成的。如果需要内存,操作系统可能会杀死您的应用程序。您可能需要考虑service

      【讨论】:

        【解决方案5】:

        我在我的 Android 手机中遇到了内存管理问题,它终止了您所描述的进程。您可以考虑安装类似Android Booster 的程序来监控可用内存并关闭使用过多内存的程序,以便您希望保持打开的程序有足够的内存运行。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-10-10
          • 1970-01-01
          • 2011-12-12
          • 1970-01-01
          • 2015-03-08
          • 2013-08-05
          • 1970-01-01
          相关资源
          最近更新 更多