前台服务因内存不足而死亡

时间:2018-02-11 07:05:17

标签: android foreground-service

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

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

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

1 个答案:

答案 0 :(得分:1)

确保您已正确实施Foreground服务。当它处于活动状态时,您将在通知栏中收到一条特殊通知,告知用户您的服务正在运行并消耗资源。仍然在某些情况下它可以被系统杀死。有关可能出现的问题,请参阅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