前台服务因内存不足而终止

Foreground service killed on low memory

我有一个由 startForeground() 启动的前台服务,并且 onStartCommand 返回 START_STICKY。我想 运行 它一整天,但当我玩游戏或通过 Google Play 中的“填充 RAM 内存”应用程序手动增加 RAM 使用时,它会停止。 (即使它被杀死,通知仍然显示。) 我该如何解决?

编辑: 或者,还有更好的方法?服务 运行s 3 个线程,其中包含一个无限循环和一些互联网调用,然后 20 分钟或 10 分钟(取决于情况)睡眠。也许是 AlarmManager 或类似的东西。

编辑 2: 我的平板电脑有 Android 4.4 (API 19),所以我不能使用 JobScheduler。我想我会使用 AlarmManager 并且它会好的。 (我在这里找到了 AlarmManagerExample:https://github.com/rakeshcusat/Code4Reference

确保您已正确实施前台服务。当它处于活动状态时,您将在通知栏中收到一个特殊通知,让用户知道您的服务正在运行并消耗资源。在某些情况下,它仍然可以被系统杀死。有关可能的问题,请参阅 Foreground service being killed by Android

作为替代解决方案,您可以尝试 JobScheduler。它允许系统根据某些条件(例如网络可用性)更有效地安排您的任务。它还支持定期作业。通常人们应该更喜欢它而不是 AlarmManager。参见 https://medium.com/google-developers/scheduling-jobs-like-a-pro-with-jobscheduler-286ef8510129

对于旧的 Android 版本 可以使用 Firebase JobDispatcher https://github.com/firebase/firebase-jobdispatcher-android