HERE SDK 在 Android 8 的后台无法使用



HERE SDK 尝试在消费者调用MapEngine.init()时在内部启动其MapService。由于 Android 8 后台执行限制,如果要从后台服务初始化MapEngine此操作将失败。有没有办法初始化不涉及 SDK 在内部启动服务的MapEngine

异常日志:

> java.lang.IllegalStateException: Not allowed to start service Intent { act=com.here.android.mpa.service.MapService.v3 cmp=de.newecho.app/com.here.android.mpa.service.MapService (has extras) }: app is in background uid UidRecord{6924417 u0a225 CEM  idle change:cached procs:1 seq(0,0,0)}
at android.app.ContextImpl.startServiceCommon(ContextImpl.java:1521)
at android.app.ContextImpl.startService(ContextImpl.java:1477)
at android.content.ContextWrapper.startService(ContextWrapper.java:650)
at com.nokia.maps.MapServiceClient.a(SourceFile:77)
at com.nokia.maps.MapsEngine.a(SourceFile:622)
at com.nokia.maps.MapsEngine.a(SourceFile:364)
at com.here.android.mpa.common.MapEngine.init(SourceFile:260)

编辑:我不知道为什么这被标记为重复项。我的问题不是关于如何处理Android 8上的后台工作,如"重复"问题。对startService()的调用发生在 HERE SDK 内部,因此消费者无法更改它。这个问题是针对HERE开发人员的,以澄清是否有办法以某种方式初始化MapEngine,以便HERE SDK不会在内部启动服务。

在HERE移动SDK中,无法从后台线程初始化映射。

在地图初始化(在前台)完成后,可以通过确保 a) 继续在后台导航等功能:所需的地图数据已加载到设备上,b) 触发前台服务

来自文档 : https://developer.here.com/documentation/android-premium/dev_guide/topics/map-guidance.html

如果您使用的是逐向导航模式 对于驾驶,也可以设置HERE SDK进行指导(包括 语音说明和事件回调),而应用位于 背景。但是,与前台导航方案不同,HERE SDK 不会在安卓后台导航期间流式传输地图数据。 为了正确支持这些设备的后台导航,HERE SDK 要求应用预加载地图数据(例如当前城市或 state),使用 MapLoader 类。

重要提示:从 Android O (8.0) 开始,如果您的应用在 背景,然后位置系统服务仅计算一个新的 应用的位置每小时几次。若要避免此行为, 按照 安卓文档。重要提示:从安卓 P (9.0) 开始,应用 需要使用前台服务必须请求 android.permission.FOREGROUND_SERVICE用户的权限。为 更多信息,请参考安卓派行为变更 文档。

最新更新