首先,我想指出的是,我已经在堆栈溢出,android文档和其他站点上做了很多研究,但是我仍然没有找到解决方案。
我需要您的帮助,以了解如何使我的SportTracker服务在android> = O中在后台运行。 实际上,我使用以下命令将服务作为粘性前台服务启动:
Intent intent = new Intent(mContext, SmanAppLocationSerivce.class);
intent.putExtra(RequestCode.AgentService,RequestCode.START_SPORT_NOTIFICATION);
startForegroundService(intent);
我会为您服务:
public void onCreate() {
super.onCreate();
mLocationRequest = LocationRequest.create()
.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY)
.setFastestInterval(Project.TIME_GPS_UPDATE_FAST)
.setInterval(Project.TIME_GPS_UPDATE)ì;
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(LocationServices.API)
.build();
}
和 onStartCommand 方法中,我 startForeground 服务。
在 onLocationChanged 中,我需要计算从开始,距离到现在的时间,并将新位置保存到db,以便在保存运动会话并将它们发送到服务器时可以全部获取。< / p>
我还需要使用计时器每秒更新进行中的通知,以便显示会话时间和会话距离。
(最好的例子是我可以针对您的预期行为向您展示 Runtastic运动)
实际上,一切正常,如果我停止活动,该服务将继续按照他的预期运行,但是当手机进入睡眠状态(我想进入打mode模式)时,该服务将被系统终止。
我尝试了以下解决方案:
有人对如何解决这个问题有了想法? 也许只需要以我不知道与O一起工作的某种模式来完成。
谢谢大家 再见
更新
我仍然没有找到我想要的东西(U2 :))。我最终要求用户在受保护的应用列表上手动设置该应用,以便电源管理器不会将其杀死。
您可以在这里"Protected Apps" setting on Huawei phones, and how to handle it
找到一些有用的信息