为了克服android OREO(targetSdkVersion 27)后台服务的限制,我使用Notification创建了前台服务。通知显示在通知栏中,到目前为止该服务正在运行。我已使用FusedLocationClient将与活动识别和位置跟踪相关的代码放在前台服务类中。手机处于活动状态或屏幕打开时,ActivityRecognition和位置跟踪将按预期工作。但是,当屏幕关闭或处于打mode模式时,它们不起作用。我不确定我是否误解了Android文档,即使用带有可见Notification的Foreground Service时应该没有任何限制。
我的主要目标是获取用户活动状态和位置记录,最长间隔为1/2分钟。但是我当前的前台服务提供的位置和活动次数更少,并且仅在设备屏幕打开时返回。 顺便说一句,我的前台服务不是绑定服务,我使用以下代码启动该服务:
Intent startIntent = new Intent(_context, ForegroundLocationService.class);
ContextCompat.startForegroundService(_context.getApplicationContext(),startIntent);
我正在使用从MainApplication(扩展Application)类而不是任何活动类调用的帮助器类来调用上述代码。
因此,在OREO中,我还需要做些什么才能实现我的目标。