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

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

Intent startIntent = new Intent(_context, ForegroundLocationService.class);
ContextCompat.startForegroundService(_context.getApplicationContext(),startIntent);

我使用从MainApplication(扩展Application)类调用的辅助类调用上面的代码,而不是从任何活动类调用 .

所以,在OREO中我还需要做些什么来实现我的目标,请建议我 .