Android Oreo前台服务在睡眠模式下无法工作

Android Oreo前台服务在睡眠模式下无法工作,android,android-8.0-oreo,foreground-service,Android,Android 8.0 Oreo,Foreground Service,为了克服android OREO(targetSdkVersion 27)后台服务的限制,我创建了一个带有通知的前台服务。通知显示在通知栏中,到目前为止服务正在运行。我已经将使用FusedLocationClient的与活动识别和位置跟踪相关的代码放在前台服务类中。当手机处于活动状态或屏幕处于打开状态时,ActivityRecognition和Location Tracking将按预期工作。但当屏幕关闭或处于打瞌睡模式时,它们不工作。我不确定我是否误解了Android文档,即在使用带有可见通知的

为了克服android OREO(targetSdkVersion 27)后台服务的限制,我创建了一个带有通知的前台服务。通知显示在通知栏中,到目前为止服务正在运行。我已经将使用FusedLocationClient的与活动识别和位置跟踪相关的代码放在前台服务类中。当手机处于活动状态或屏幕处于打开状态时,ActivityRecognition和Location Tracking将按预期工作。但当屏幕关闭或处于打瞌睡模式时,它们不工作。我不确定我是否误解了Android文档,即在使用带有可见通知的前台服务时不应有任何限制

我的主要目标是以最长1/2分钟的间隔获取用户活动状态和位置记录。但我目前的前台服务提供位置和活动的次数较少,而且只在设备屏幕打开时返回。 顺便说一下,我的前台服务不是绑定服务,我使用以下代码启动该服务:

Intent startIntent = new Intent(_context, ForegroundLocationService.class);
ContextCompat.startForegroundService(_context.getApplicationContext(),startIntent);
我使用一个助手类调用上述代码,该类是从MainApplication(ExtendesApplication)类调用的,而不是从任何活动类调用的


因此,在OREO中,为了实现我的目标,我还必须做些什么,请建议我。

拥有前台服务不会影响我。有没有办法克服打瞌睡模式的限制?我可以向用户显示通知或授权警告,因为我的应用程序针对的是一小群特定的商业/公司用户。顺便说一句,我已经禁用了我的应用程序的电池优化功能,但运气不佳。在电池优化屏幕中,播放服务是否显示为未优化?它应该是,而且通常是不能改变的,但它值得检查。另外,您正在测试什么设备?一些设备制造商有自己的定制电源管理设备。如果另一个应用程序正在访问后台的位置,那么还需要测试一下你的应用程序的行为。例如,您可以设置谷歌地图进行导航,然后将其移动到后台,看看会发生什么。我正在使用华为手机,我在电池优化下的启动选项中设置了“手动管理”。手动管理应允许自动启动、后台运行和其他应用程序启动。但我认为它们不起作用。