我正在Xamarin.Android平台上实现一个Android应用程序,该应用程序用于跟踪他旅行的距离和路线。通过为Android OS的较低和较高版本使用后台位置服务和前台定位服务。
当用户关闭应用程序我的前台服务正在停止并且无法跟踪距离和路线时,我在更高版本的Android设备(高于8.0 OS版本)中遇到了问题。它只给出了Arial Route的起点和终点距离。
如果不使用Google或其他方向API,请给我任何其他方法来解决我的问题。
原因:
为了保持电池,用户体验和系统运行状况,后台应用程序在运行Android 8.0的设备上使用时,不太频繁地接收位置更新。此行为更改会影响所有接收位置更新的应用,包括Google Play服务。
这些更改会影响以下API:
解:
Android 8.0引入了一种名为Context的新方法。 StartForegroundService(),在前台启动新服务。系统创建服务应用程序后有五秒钟调用服务startForeground
的visible()方法来显示新服务用户的通知。如果在此时间限制内未调用应用程序
StartForeground ()
,然后系统将停止此应用程序的ANR服务和声明。
Intent service = new Intent(TheApplication.getInstance().getApplicationContext(), MyBackgroundService.class);
service.putExtra("startType", 1);
if (Build.VERSION.SDK_INT >= 26) {
TheApplication.getInstance().startForegroundService(service);
} else {
TheApplication.getInstance().startService(service);
}