我正在用android开发聊天应用程序。并且需要保持服务运行 即使退出申请之后。 我是我 返回START_STICKY; 在我的服务的onStartCommand()中。 但由于android oreo中服务的限制,退出应用程序几秒钟后服务将被销毁。 到目前为止,用户丢失了新的消息通知。 由于本地网络和无法访问互联网,我无法使用Fcm。 而且我不能使用ForegroundService。 (因为雇主要求不显示任何通知)。 当我在android mobile设置中检查运行服务时,有一些 应用程序,其服务不会被杀死,例如Es文件浏览器,Zapya,... 他们如何保持服务在没有前台服务的情况下运行。 我该怎么办。 以爆炸图像显示,某些应用程序服务正在运行,而没有任何通知。
答案 0 :(得分:0)
系统区分前台和后台应用程序。一个 如果满足以下任一条件,则认为该应用位于前台 正确:
- 它具有可见的活动,无论该活动是开始还是暂停。
- 它具有前台服务。
- 另一个前台应用程序通过绑定到其中一项服务或通过使用其中一项内容而连接到该应用程序 提供者。
原因Es FileExplorer
(根据我的看法)可能是:
Es FileExplorer(在利用某些漏洞方面相当厚颜无耻)有几个内容提供程序,但一个提供程序FileProveders
可以使com.android.providers.settings
连接到它。我想这种联系使它成为前景。他们几乎为几乎所有方案注册了所有可能的intent-filter
。您尝试共享或访问的任何内容都可能以某种方式触发它们,从而保持其流程的使用状态(您只需单击详细信息,就会发现LocalCService
应用正在运行)。
但是对于您的应用:
如果您无法使用FCM
,ForegroundService
并且对用户没有可见性,那么唯一的选择就是定期执行任务。您可以使用WorkManager。唯一的限制是计划的最短持续时间为15分钟。有关WorkManager的用法,请参考我对scheduling work with WorkManager和WorkManager vs Service的回答。