我有一个由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)
答案 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