0

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

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

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

4

1 回答 1

1

确保您已正确实施前台服务。当它处于活动状态时,您将在通知栏中有一个特殊通知,让用户知道您的服务正在工作并消耗资源。仍然在某些情况下,它可能会被系统杀死。对于可能的问题,请参阅前台服务被 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

于 2018-02-11T08:59:35.173 回答